Skip to content

guptapiyush/ias-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#INCIDENT AID SERVER ##RESTFUL API INTERFACE

###GENERAL

  1. The server is hosted on Digital Ocean
  2. https://cloud.digitalocean.com/droplets/2289696
  3. host address: 104:131:135:109:3000

###SERVER LOGIN

  1. ssh root@104.131.135.109
  2. password: DIGI...
  3. check if the node process is already running
    1. ps -a (check for a node process)
    2. whatsapp the team and ask if someone is using it
    3. kill -9 <pid> (process id)
  4. node server.js ===> IAS server is running on port 3000

###MONGO HQ LOGIN

  1. url: www.mongohq.com
  2. login: cecile.peraire@sv.cmu.edu
  3. password: MONG...
  4. database name: fire logs

###SCHEMA TRANSLATION

{
 user_n: 'Joe123', (String)
 r: 1,  (Number: 1-commander, 2-responder)
 tp: 1, (Number: 1-REQ, 2-ACK, 3-COP)
 m: 1,  (Number: 1-Vacate, 2-Mayday, 3-Par, 4-RescueInProg,
                 5-UtilitiesOff, 6-UtilitiesOn, 7-VertVent,
                 8-CrossVent, 9-AllClear, 10-LifeHaz)
 lt: 40.00001, (Number)
 lg: -70.00001, (Number)
 tk: '0x1234', (Number)
 ts: '1405669256973' (String)
}
  1. job_role = ['firefighter', 'commander']
  2. contact = '+16503530259'
  3. IAS server auto-generates ts, no need to POST
  4. IAS server returns empty objects {} if there is nothing that matches the query.
  5. All non return type endpoints return 200 on success
  6. All endpoints return 400 on failure

###SCHEMAS

####User

{
 user_n: String,
 password: String,
 job_role: String,
 r: Number,
 contact: String,
 engine_name: String
}

####Event

{
 user_n: String,
 r: Number,
 tp: Number,
 m: Number,
 lt: Number,
 lg: Number,
 tk: String,
 ts: String
}

####Incident

{
  incident_name: String,
  commander: String,
  firefighters: [String],
  lt: Number,
  lg: Number,
  street: String,
  city: String,
  state: String,
  zip: String,
  start_time: String,
  end_time: String,
  ts: String
}

####Engine

{
  engine_name: String,
  hotspot_name: String
}

####Image

{
  incident_id: mongoose.Types.ObjectId() //hidden
  contentType: String, ('jpeg')
  data: Buffer
}

###COMMANDER DASHBOARD / GET

###SMS-TWILIO

  1. /twilio_send_sms POST expects
{
  user_n: String,
  r: Number,
  tp: Number,
  m: Number,
  lt: Number,
  lg: Number,
  tk: String
}
  1. /twilio_receive_sms (Invisible to the user, handled by the server)

  2. If the job role is a commander, the message will be sent to the firefighters in that particular incident.

  3. If the incident role is a firefighter, the message will be sent to the commander in that particular incident.

###CREATE

  1. /create_user POST TESTED expects
{
  user_n: String,
  password: String
}
  1. /create_event POST TESTED expects
{
  user_n: String,
  r: Number,
  tp: Number,
  m: Number,
  lt: Number,
  lg: Number,
  tk: String,
  ts: String
}
  1. /create_incident POST TESTED expects
{
  incident_name: 'greer',
  commander: 'jason',
  firefighters: ['rahul', 'yaz', 'gerard'],
  street: 'Maiden Lane',
  city: 'San Francisco',
  state: 'CA',
  zip: '94303',
  start_time: '10',
  end_time: 'empty',
  lt: 0,
  lg: 0,
  ts: '140566925697'
}
  1. /create_engine POST TESTED expects
{
  engine_name: 'clifford',
  hotspot: 'truck #4'
}

###READ

  1. /get_all_users GET TESTED

    1. Returns [{user}, {user}, {user}, ...]
    2. user object => refert to User schema ^
  2. /get_all_events GET TESTED

    1. Returns [{event}, {event}, {event}, ...]
    2. event object ==> refer to Event schema ^
  3. /get_all_incidents GET TESTED

    1. Returns [{incident}, {incident}, {incident}, ...]
    2. incident object ==> refer to Incident schema ^
  4. /get_all_engines GET TESTED

    1. Returns [{engine}, {engine}, ...]
    2. engine object ==> refer to Engine schema ^
  5. /get_user_by_user_name POST TESTED

    1. Expects {user_n: 'john'}
    2. Returns {user}
    3. user object ==> refer to User schema ^
  6. /get_users_by_job_role POST TESTED

    1. Expects {job_role: 'firefighter'} or {job_role: 'commander'}`
    2. Returns [{user}, {user}, {user}, ...]
    3. user object ==> refer to User schema ^
  7. /get_users_by_engine_name POST TESTED

    1. Expects {engine_name: 'F1'}
    2. Returns [{user}, {user}, ...]
    3. user object ==> refer to User schema ^
  8. /get_users_by_incident_name POST TESTED

    1. Expects {incident_name: <incident_name>}
    2. Returns [{user}, {user}, {user}, ...]
    3. user object ==> refer to User schema ^
  9. /get_events_by_incident_name POST TESTED

    1. Expects {incident_name: <incident_name>}
    2. Returns [{event}, {event}, {event}, ...]
    3. event object ==> refer to Event schema ^
  10. **/get_events_by_current_incident_and_user_name POST

  11. Expects {user_n: 'rahul'}

  12. Returns [{event}, {event}, {event}, ...]

  13. event object ==> refer to Event schema ^

  14. /get_events_by_user_name POST TESTED

  15. Expects{user_n: 'rahul'}

  16. Returns [{event}, {event}, {event}, ...]

  17. event object ==> refer to Event schema ^

  18. /get_incident_by_incident_name POST TESTED

  19. Expects {incident_name: <incident_name>}

  20. Returns {incident}

  21. incident object ==> refer to Incident schema ^

  22. /get_current_incident_by_user_name POST TESTED

  23. Expects {user_n: <user_name>}

  24. Returns the the most recent {incident}

  25. incident object ==> refer to Incident schema ^

  26. /get_incidents_by_user_name POST TESTED

  27. Expects {user_n:'rahul'}

  28. Returns [{incident}, {incident}, ... ]

  29. incident object ==> refer to Incident schema ^

  30. /get_engine_by_engine_name TESTED

  31. Expects {engine_name: 'F1'}

  32. Returns {engine}

  33. engine object ==> refer to Engine schema ^

###COP

  1. /get_current_cop_image NOT TESTED

    1. returns (jpeg file)
  2. /post_cop_image_by_current_incident NOT TESTED

    1. Expects {file_name: String, data: Buffer}
    2. Returns success or fail

###DELETE

  1. /delete_user_by_user_name POST TESTED

    1. Expects {user_n: 'rahul'}
    2. Returns 200 on success, 400 on failure
  2. /delete_events_by_incident_name POST TESTED

    1. Expects {incident_name: 'fire_1'}
    2. Returns 200 on success, 400 on failure
  3. /delete_incident_by_incident_name POST TESTED

    1. Expects {incident_name: 'homer'}
    2. Returns 200 on success, 400 on failure
  4. /delete_engine_by_engine_name POST TESTED

    1. Expects {engine_name: 'F2'}
    2. Returns 200 on success, 400 on failure

###UPDATE

  1. /update_user_by_user_name POST TESTED

    1. Does not update user_name
    2. Replaces the fields that are passed and leaves the fields that already exist in the database untouched
    3. Expects {user_n: 'john', contact: '+16503530259', ...}
    4. Returns 200 on success, 400 on failure
  2. /update_incident_by_incident_name POST TESTED

    1. Does not update incident_name.
    2. Replaces the fields that are passed and leaves the fields that already exist in the database untouched.
    3. Expects {incident_name: 'homer', end_time: '13:30', 'lg': 34, 'lt': 23, ..}
    4. Returns 200 on success, 400 on failure.
  3. /update_incident_commander POST TESTED

    1. Moves the old commander into the firefighters array.
    2. Replaces the old commander with the commander passed.
    3. Expects {incident_name: 'fire 3', user_n: 'rahul'}
    4. Returns 200 on success, 400 on failure.
  4. /update_engine_by_engine_name POST TESTED

    1. Replaces the fields that are passed and leaves the fields that already exist in the database untouched.
    2. Expects {engine_name: 'clifford', hotspot_name: 'truck #4'}

###AUTHENTICATE

  1. /authenticate_user POST TESTED
    1. expects {user_n: 'rahul', password: 'pwd123', engine_name: 'clifford', contact: '+16503530259'}
    2. updates user with contact information for an incident, this means that any firefighter can use any phone
    3. returns 200 on success, 400 on failure

About

back-end code

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published