Files
2022-04-27 22:01:08 -04:00

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.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