77 lines
3.2 KiB
Markdown
77 lines
3.2 KiB
Markdown
# Running the service
|
|
## Pre-Reqs
|
|
* Access to the interenet
|
|
* Docker environment installed with proper user permissions
|
|
|
|
## Running
|
|
* This will use port 4916, if that is not available modify the Makefile
|
|
* Run `make`
|
|
|
|
## Stopping
|
|
* Type `exit`
|
|
|
|
## Testing
|
|
* Run `bash ./test.sh` in a seperate window on the same machine
|
|
|
|
# API Description
|
|
## Setting Persona
|
|
|
|
GET request to /set_persona with the following properties
|
|
* persona_id: integer (if not unique it will override a previous persona)
|
|
* first_name: string first name of persona
|
|
* last_name: string last name of persona
|
|
* interest_list: string comma seperated list of interests
|
|
* lat: floating point latitude of location
|
|
* lon: floating point longitude of location
|
|
|
|
This will return a json formatted string of the values you set
|
|
|
|
## Getting persona
|
|
GET request to /get_persona with the following propertie
|
|
* persona_id: integer id (error will occur if it does not exist)
|
|
|
|
This will return a JSON in the following format
|
|
* id: integer persona id
|
|
* first_name: string first name
|
|
* last_name: string last name
|
|
* interest_list: comma seperated string of interests
|
|
* latitude: floating point latitude
|
|
* longitude: floating point longitude
|
|
* city: string city
|
|
* state: string state
|
|
* temperature: current temperature in fahrenheit
|
|
|
|
# Further Questions
|
|
## A
|
|
I was not able to complete every aspect of this assignment. I few things I would have liked to accomplish in addition were:
|
|
* Proper error checking
|
|
* Currently it'll just fail out if bad inputs are given. I would have liked to have it error gracefully with proper error codes
|
|
* Clean up the code
|
|
* There are some odd variable names and no comments
|
|
* Several variables in the API itself change from input to output, I would have liked to make those the same
|
|
* Better id handling
|
|
* Have additional ways to determine what the next un-assigned ID would be
|
|
* Have a better way when getting the information that an ID doesn't exist
|
|
* Better testing
|
|
* Create a little more robust testing
|
|
* Temperature
|
|
* I grabbed the first temperature returned, rather than the current. It isn't too far off, but would have like to get the actual current temperature.
|
|
|
|
## B
|
|
Potential issues include
|
|
* Poor error handling, the app will crash on bad input
|
|
* Provide more rubust intput checking with error code/string returns
|
|
* Interest list handling
|
|
* Right now it is just a comma seperated list
|
|
* I would have liked to have a seperate table of interests, then the returned json could have been an array list. This would have provided better access for the front end
|
|
* Repeat/Unknown IDs
|
|
* A repeat ID will overwrite perviously set values, this was a choice, but the API should have an update vs new option
|
|
* There could also be a way to not give an ID and the next ID is reaturned to the front end
|
|
* Unknown IDs on get are not handled and will cause a crash, there should be an error message returned
|
|
|
|
## C
|
|
Possible security issues are:
|
|
* If anyone has arbetrary access they will be able to get all the persona information, this should be locked down to only authorized users
|
|
* Overloading the memory with large values, there is no limit to the length of the strings, thus someone could overwhelm the system by putting in too long of strings
|
|
|