Initial web service for oav-express
This commit is contained in:
Родитель
fa17e11eed
Коммит
9b8cf0c515
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible Node.js debug attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Launch Program",
|
||||||
|
"program": "${workspaceRoot}/index.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "node",
|
||||||
|
"request": "attach",
|
||||||
|
"name": "Attach to Port",
|
||||||
|
"address": "localhost",
|
||||||
|
"port": 5858
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"files.exclude": {
|
||||||
|
"**/.git": true,
|
||||||
|
"**/.svn": true,
|
||||||
|
"**/.DS_Store": true
|
||||||
|
},
|
||||||
|
"[javascript]": {
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.formatOnPaste": true,
|
||||||
|
"editor.tabSize": 2,
|
||||||
|
"editor.detectIndentation": false
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,5 @@
|
||||||
|
# oav-express web service
|
||||||
|
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
// Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var oav = require('oav');
|
||||||
|
var express = require('express');
|
||||||
|
var bodyParser = require('body-parser');
|
||||||
|
var multer = require('multer');
|
||||||
|
|
||||||
|
var ErrorCodes = oav.Constants.ErrorCodes;
|
||||||
|
var port = process.env.PORT || 1337;
|
||||||
|
var server;
|
||||||
|
var app = express();
|
||||||
|
app.use(bodyParser.json()); // for parsing application/json
|
||||||
|
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
|
||||||
|
|
||||||
|
// LiveValidator configuration options
|
||||||
|
let options = {
|
||||||
|
"git": {
|
||||||
|
"shouldClone": true,
|
||||||
|
"url": "https://github.com/Azure/azure-rest-api-specs.git"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const validator = new oav.LiveValidator(options);
|
||||||
|
validator.initialize().then(() => {
|
||||||
|
console.log("Live validator initialized.");
|
||||||
|
server = app.listen(port, () => {
|
||||||
|
var host = server.address().address
|
||||||
|
var port = server.address().port
|
||||||
|
|
||||||
|
console.log("Example app listening at http://%s:%s", host, port);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get('/', function (req, res) {
|
||||||
|
res.send('Welcome to oav-express');
|
||||||
|
})
|
||||||
|
|
||||||
|
// This responds a POST request for live validation
|
||||||
|
app.post('/validate', function (req, res) {
|
||||||
|
let validationResult = validator.validateLiveRequestResponse(req.body);
|
||||||
|
|
||||||
|
// Something went wrong
|
||||||
|
if (validationResult && validationResult.errors && Array.isArray(validationResult.errors) && validationResult.errors.length) {
|
||||||
|
let errors = validationResult.errors;
|
||||||
|
let is400 = errors.some((error) => { return error.code === ErrorCodes.IncorrectInput });
|
||||||
|
if (is400) {
|
||||||
|
// Return 400 with validationResult
|
||||||
|
return res.send(400, validationResult);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return 200 with validationResult
|
||||||
|
return res.send(validationResult);
|
||||||
|
});
|
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
"name": "oav-express",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"author": {
|
||||||
|
"name": "Microsoft Corporation",
|
||||||
|
"email": "azsdkteam@microsoft.com",
|
||||||
|
"url": "https://github.com/azure/oav-express"
|
||||||
|
},
|
||||||
|
"description": "Web service for live request validation using oav",
|
||||||
|
"homepage": "https://github.com/azure/oav-express",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/Azure/oav-express.git"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/Azure/oav-express/issues"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"oav": "azure/oav#master",
|
||||||
|
"express": "^4.15.2",
|
||||||
|
"cookie-parser": "^1.4.3",
|
||||||
|
"multer": "^1.3.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"jshint": "2.9.4",
|
||||||
|
"mocha": "^3.2.0",
|
||||||
|
"should": "5.2.0",
|
||||||
|
"@types/mocha": "^2.2.40",
|
||||||
|
"@types/should": "^8.1.30"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.9.1"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"start": "node index.js",
|
||||||
|
"test": "mocha -t 50000"
|
||||||
|
},
|
||||||
|
"main": "./index.js"
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"name": "worker",
|
||||||
|
"script": "./index.js",
|
||||||
|
"instances": 1,
|
||||||
|
"merge_logs": true,
|
||||||
|
"log_date_format": "YYYY-MM-DD HH:mm Z",
|
||||||
|
"watch": true,
|
||||||
|
"watch_options": {
|
||||||
|
"followSymlinks": true,
|
||||||
|
"usePolling": true,
|
||||||
|
"interval": 5
|
||||||
|
}
|
||||||
|
}
|
Загрузка…
Ссылка в новой задаче