3.2 KiB
3.2 KiB
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.shin 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