Skip to content

Commit

Permalink
updated
Browse files Browse the repository at this point in the history
  • Loading branch information
ibumjlp committed Mar 19, 2024
1 parent 1cba679 commit 13a6822
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 44 deletions.
62 changes: 21 additions & 41 deletions app.js
Original file line number Diff line number Diff line change
@@ -1,57 +1,37 @@
var restify = require('restify');
var errs = require('restify-errors');
const restify = require('restify');
const errs = require('restify-errors');
const cal = require('./src/cal.js');

const server = restify.createServer({
name: 'myapp',
name: 'bsharp-quiz',
version: '1.0.0'
});

server.use(restify.plugins.acceptParser(server.acceptable));
server.use(restify.plugins.queryParser());
server.use(restify.plugins.bodyParser());

function cal(operator, x, y) {
let answer;
switch (operator) {
case "+":
answer = parseFloat(x) + parseFloat(y);
break;
case "-":
answer = parseFloat(x) - parseFloat(y);
break;
case "*":
answer = parseFloat(x) * parseFloat(y);
break;
case "/":
if (y == "0") {
answer = "Divide by zero";
break;
} else {
answer = parseFloat(x) / parseFloat(y);
break;
}
default:
answer = "Invalid Operator";
}
return answer;
}

server.post('/calculator', function (req, res, next) {
let cal_res = cal(req.body.operator, req.body.x, req.body.y);
try {
if (!req.body.operator || !req.body.x || !req.body.y) return next(new errs.BadRequestError("body required"));

let cal_res = cal(req.body.operator, req.body.x, req.body.y);
if (cal_res == "Divide by zero") {
return next(new errs.BadRequestError("Divide by zero"));
} else if (cal_res == "Invalid Operator") {
return next(new errs.BadRequestError("Invalid operator"));
} else {
const obj = { value: cal_res }
res.send(obj);
return next();
}

if (cal_res == "Divide by zero") {
return next(new errs.BadRequestError("Divide by zero"));
} else if (cal_res == "Invalid Operator") {
return next(new errs.BadRequestError("Invalid operator"));
} else {
const obj = { value: cal_res }
res.send(obj);
return next();
} catch (error) {
return next(new errs.InternalServerError(error));
}
});

server.listen(8080, function () {
console.clear();
console.log('%s listening at %s', server.name, server.url);
});

module.exports = cal;
});
2 changes: 1 addition & 1 deletion app.test.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const cal = require('./app.js')
const cal = require('./src/cal.js')

describe('Calculation Test', () => {
let opt = ["+", "-", "*", "/"];
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "proj.test",
"name": "bsharp-quiz",
"version": "1.0.0",
"description": "",
"main": "index.js",
"main": "app.js",
"scripts": {
"test": "jest"
},
Expand Down
27 changes: 27 additions & 0 deletions src/cal.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
function cal(operator, x, y) {
let answer;
switch (operator) {
case "+":
answer = parseFloat(x) + parseFloat(y);
break;
case "-":
answer = parseFloat(x) - parseFloat(y);
break;
case "*":
answer = parseFloat(x) * parseFloat(y);
break;
case "/":
if(y == "0") {
answer = "Divide by zero";
break;
} else {
answer = parseFloat(x) / parseFloat(y);
break;
}
default:
answer = "Invalid Operator";
}
return answer;
}

module.exports = cal;

0 comments on commit 13a6822

Please sign in to comment.