Skip to content

Commit

Permalink
Added logging & fixed readme typo
Browse files Browse the repository at this point in the history
  • Loading branch information
Jakub Węglarek committed Feb 2, 2021
1 parent 6fc3015 commit 06328fe
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 24 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ RandomAPI is a super simple express API generating random numbers
# Usage
### URL queries
1. `min` (required) - min random number (inclusive) [must be >= 0 & < max]
1. `max` (required) - max random number (inclusive) [must be > min]
1. `max` (required) - max random number (exclusive) [must be > min]
1. `num` (optional) - amount of random number to generate (default: 1e5)<br /><br />
Feel free to edit `config/config.json` to change: server port, request path, `num` limit
### HTTP Headers
Expand All @@ -17,4 +17,5 @@ Feel free to edit `config/config.json` to change: server port, request path, `nu
`[0,9,1,9,5,...0,9,4,4,6]`<br /><br />
The amout of numbers is defined in the `num` request header
# Changelog
02.02.2021. - Added logging & fixed readme typo
29.01.2021. - Initial release
2 changes: 2 additions & 0 deletions functions/formatLink.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
const formatSubdomains = require("./formatSubdomains.js");
module.exports = request => `${request.protocol}://${formatSubdomains(request)}${request.hostname}${request.originalUrl}`;
3 changes: 3 additions & 0 deletions functions/formatLog.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const time = require("./time.js");
const formatLink = require("./formatLink.js");
module.exports = request => `${time()} - ${request.ip.slice(7)} (${request.method}: ${formatLink(request)})`;
5 changes: 5 additions & 0 deletions functions/formatSubdomains.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = request => {
let response = "";
request.subdomains.forEach(subdomain => response += `${subdomain}.`);
return response;
}
5 changes: 5 additions & 0 deletions functions/log.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const formatLog = require("../functions/formatLog.js");
const fs = require("fs");
module.exports = request => fs.appendFile("log/log.log", `${formatLog(request)}\n`, {
encoding: "utf-8"
}, error => error);
25 changes: 25 additions & 0 deletions functions/time.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
module.exports = () => {
let now = new Date();
let hour = now.getHours();
if (hour < 10) {
hour = `0${hour}`;
}
let minute = now.getMinutes();
if (minute < 10) {
minute = `0${minute}`;
}
let second = now.getSeconds();
if (second < 10) {
second = `0${second}`;
}
let day = now.getDate();
if (day < 10) {
day = `0${day}`;
}
let month = now.getMonth() + 1;
if (month < 10) {
month = `0${month}`;
}
let year = now.getFullYear();
return `${hour}:${minute}:${second} ${day}.${month}.${year}.`;
}
48 changes: 26 additions & 22 deletions handlers/request.js
Original file line number Diff line number Diff line change
@@ -1,33 +1,37 @@
const config = require("../config/config.json");
const sendResponse = require("../functions/sendResponse.js");
const log = require("../functions/log.js");
const config = require("../config/config.json");
module.exports = (request, response) => {
response.set({
"Access-Control-Allow-Origin": "*"
});
if (!request.query.min) sendResponse(response, 400);
else if (!request.query.max) sendResponse(response, 400);
else if (isNaN(request.query.min)) sendResponse(response, 400);
else if (isNaN(request.query.max)) sendResponse(response, 400);
else if (request.query.min < 0) sendResponse(response, 416);
else if (request.query.min > request.query.max) sendResponse(response, 416);
else if (!request.query.num) {
const min = request.query.min;
const max = request.query.max;
const random = Math.floor(Math.random() * (max - min + 1) + min);
response.status(200).end(random.toString());
} else {
if (isNaN(request.query.num)) sendResponse(response, 400);
else if (request.query.num < 1) sendResponse(response, 416);
else if (request.query.num > config.numLimit) sendResponse(response, 416);
else {
if (log(request)) sendResponse(response, 500);
else {
if (!request.query.min) sendResponse(response, 400);
else if (!request.query.max) sendResponse(response, 400);
else if (isNaN(request.query.min)) sendResponse(response, 400);
else if (isNaN(request.query.max)) sendResponse(response, 400);
else if (request.query.min < 0) sendResponse(response, 416);
else if (request.query.min > request.query.max) sendResponse(response, 416);
else if (!request.query.num) {
const min = request.query.min;
const max = request.query.max;
const numbers = [];
for (let i = 0; i < request.query.num; i++) {
const random = Math.floor(Math.random() * (max - min + 1) + min);
numbers.push(random);
const random = Math.floor(Math.random() * (max - min + 1) + min);
response.status(200).end(random.toString());
} else {
if (isNaN(request.query.num)) sendResponse(response, 400);
else if (request.query.num < 1) sendResponse(response, 416);
else if (request.query.num > config.numLimit) sendResponse(response, 416);
else {
const min = request.query.min;
const max = request.query.max;
const numbers = [];
for (let i = 0; i < request.query.num; i++) {
const random = Math.floor(Math.random() * (max - min + 1) + min);
numbers.push(random);
}
response.status(200).end(JSON.stringify(numbers));
}
response.status(200).end(JSON.stringify(numbers));
}
}
}
Empty file added log/log.log
Empty file.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "randomapi",
"version": "1.0.0",
"version": "1.0.1",
"description": "RandomAPI is a super simple express API generating random numbers",
"main": "index.js",
"scripts": {
Expand Down

0 comments on commit 06328fe

Please sign in to comment.