- The API endpoint is
GET [project_url]/api/timestamp/:date_string?
- A date string is valid if can be successfully parsed by
new Date(date_string)
(JS) . Note that the unix timestamp needs to be an integer (not a string) specifying milliseconds. In our test we will use date strings compliant with ISO-8601 (e.g."2016-11-20"
) because this will ensure an UTC timestamp. - If the date string is empty it should be equivalent to trigger
new Date()
, i.e. the service uses the current timestamp. - If the date string is valid the api returns a JSON having the structure
{"unix": <date.getTime()>, "utc" : <date.toUTCString()> }
e.g.{"unix": 1479663089000 ,"utc": "Sun, 20 Nov 2016 17:31:29 GMT"}
. - If the date string is invalid the api returns a JSON having the structure
{"unix": null, "utc" : "Invalid Date" }
. It is what you get from the date manipulation functions used above.
- https://curse-arrow.hyperdev.space/api/timestamp/2015-12-15
- https://curse-arrow.hyperdev.space/api/timestamp/1450137600000
- { "unix": 1450137600, "natural": "December 15, 2015" }
/api/whoami
- I can get the IP address, preferred languages (from header
Accept-Language
) and system infos (from headerUser-Agent
) for my device.
- [base_url]/api/whoami
{"ipaddress":"159.20.14.100","language":"en-US,en;q=0.5","software":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0"}
/api/shorturl
- I can POST a URL to
[project_url]/api/shorturl/new
and I will receive a shortened URL in the JSON response. Example :{"original_url":"www.google.com","short_url":1}
- If I pass an invalid URL that doesn't follow the valid
http(s)://www.example.com(/more/routes)
format, the JSON response will contain an error like{"error":"invalid URL"}
. HINT: to be sure that the submitted url points to a valid site you can use the functiondns.lookup(host, cb)
from thedns
core module. - When I visit the shortened URL, it will redirect me to my original link.
POST [project_url]/api/shorturl/new - body (urlencoded) : url=https://www.google.com
[this_project_url]/api/shorturl/3
https://www.freecodecamp.org/forum/
Form is served in /api/exercises
- I can create a user by posting form data username to /api/exercises/new/user and returned will be an object with username and _id.
- I can get an array of all users by getting api/exercise/users with the same info as when creating a user.
- I can add an exercise to any user by posting form data userId(_id), description, duration, and optionally date to /api/exercises/new/exercise. If no date supplied it will use current date. Returned will the the user object with also with the exercise fields added.
- I can retrieve a full exercise log of any user by getting /api/exercises/log/ with a parameter of username. Return will be the user object with added array log and count (total exercise count).
- I can retrieve part of the log of any user by also passing along optional parameters of from & to or limit. (Date format yyyy-mm-dd, limit = int)
/api/file-upload
- I can submit a form that includes a file upload.
- The form file input field has the "name" attribute set to "upfile". We rely on this in testing.
- When I submit something, I will receive the file name and size in bytes within the JSON response
- Go to the main page, and upload a file using the provided form.
- To handle the file uploading you should use the multer npm package.