-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfibonacci.js
51 lines (44 loc) · 1.41 KB
/
fibonacci.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
'use strict';
const fib = require('./lib/fibonacci.js');
const jsonschema = require('jsonschema');
var validator = new jsonschema.Validator();
var schema = require('./schema/FibonacciRequest.json');
module.exports.handler = (event, context, callback) => {
var response;
console.log(event);
try {
// validate input with a JSON Schema
validator.validate(event.queryStringParameters, schema, {throwError: true});
var number = event.queryStringParameters.number;
// extract parameter from schema here, because it'll get sent as a string instead of a number
if (typeof(number) === 'string') {
// if this fails we have an invalid input anyway
number = parseInt(number);
}
var result = fib.fibonacci(number).toNumber();
response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": true
},
body: JSON.stringify({
success: true,
input: number,
result: result
})
};
} catch (exc) {
response = {
statusCode: 400,
body: JSON.stringify({
success: false,
message: 'Invalid input parameter'
})
};
} finally {
callback(null, response);
}
// Use this code if you don't use the http event with the LAMBDA-PROXY integration
// callback(null, { message: 'Go Serverless v1.0! Your function executed successfully!', event });
};