diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..d9e5b49 --- /dev/null +++ b/.babelrc @@ -0,0 +1 @@ +{ "presets": ["@babel/preset-env"]} \ No newline at end of file diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..62d3e94 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,23 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +README.md \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fafe37d --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +data/cache +.idea +node_modules +mongo_data diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b336ace --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM node:current-alpine AS builder +WORKDIR /usr/src/app +COPY /package.json /app/ +COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"] +RUN apk add --no-cache git +RUN npm install +COPY . . diff --git a/dist/app.js b/dist/app.js new file mode 100644 index 0000000..acf8e5a --- /dev/null +++ b/dist/app.js @@ -0,0 +1,46 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _express = _interopRequireDefault(require("express")); + +var _path = _interopRequireDefault(require("path")); + +var _cookieParser = _interopRequireDefault(require("cookie-parser")); + +var _morgan = _interopRequireDefault(require("morgan")); + +var _index = _interopRequireDefault(require("./routes/index")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// var express = require('express'); +// var path = require('path'); +// var cookieParser = require('cookie-parser'); +// var logger = require('morgan'); +// var indexRouter = require('./routes/index'); +// var usersRouter = require('./routes/users'); +// var app = express(); +// app.use(logger('dev')); +// app.use(express.json()); +// app.use(express.urlencoded({ extended: false })); +// app.use(cookieParser()); +// app.use(express.static(path.join(__dirname, 'public'))); +// app.use('/', indexRouter); +// app.use('/users', usersRouter); +// module.exports = app; +// app.js +var app = (0, _express["default"])(); +app.use((0, _morgan["default"])('dev')); +app.use(_express["default"].json()); +app.use(_express["default"].urlencoded({ + extended: false +})); +app.use((0, _cookieParser["default"])()); +app.use(_express["default"]["static"](_path["default"].join(__dirname, '../public'))); +app.use('/', _index["default"]); +var _default = app; +exports["default"] = _default; \ No newline at end of file diff --git a/dist/bin/www.js b/dist/bin/www.js new file mode 100644 index 0000000..ae89794 --- /dev/null +++ b/dist/bin/www.js @@ -0,0 +1,93 @@ +"use strict"; + +var _app = _interopRequireDefault(require("../app")); + +var _debug = _interopRequireDefault(require("debug")); + +var _http = _interopRequireDefault(require("http")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// bin/www.js + +/** + * Module dependencies. + */ +var debug = (0, _debug["default"])('your-project-name:server'); +/** + * Get port from environment and store in Express. + */ + +var port = normalizePort(process.env.PORT || '3000'); + +_app["default"].set('port', port); +/** + * Create HTTP server. + */ + + +var server = _http["default"].createServer(_app["default"]); +/** + * Listen on provided port, on all network interfaces. + */ + + +server.listen(port); +server.on('error', onError); +server.on('listening', onListening); +/** + * Normalize a port into a number, string, or false. + */ + +function normalizePort(val) { + var port = parseInt(val, 10); + + if (isNaN(port)) { + // named pipe + return val; + } + + if (port >= 0) { + // port number + return port; + } + + return false; +} +/** + * Event listener for HTTP server "error" event. + */ + + +function onError(error) { + if (error.syscall !== 'listen') { + throw error; + } + + var bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port; // handle specific listen errors with friendly messages + + switch (error.code) { + case 'EACCES': + console.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + + case 'EADDRINUSE': + console.error(bind + ' is already in use'); + process.exit(1); + break; + + default: + throw error; + } +} +/** + * Event listener for HTTP server "listening" event. + */ + + +function onListening() { + var addr = server.address(); + var bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port; + debug('Listening on ' + bind); +} \ No newline at end of file diff --git a/dist/routes/index.js b/dist/routes/index.js new file mode 100644 index 0000000..e02ab15 --- /dev/null +++ b/dist/routes/index.js @@ -0,0 +1,30 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _express = _interopRequireDefault(require("express")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +// var express = require('express'); +// var router = express.Router(); +// /* GET home page. */ +// router.get('/', function(req, res, next) { +// res.render('index', { title: 'Express' }); +// }); +// module.exports = router; +// routes/index.js +var router = _express["default"].Router(); +/* GET home page. */ + + +router.get('/', function (req, res, next) { + res.render('index', { + title: 'Express' + }); +}); +var _default = router; +exports["default"] = _default; \ No newline at end of file diff --git a/docker-compose-proxy.yml b/docker-compose-proxy.yml new file mode 100644 index 0000000..383c0b6 --- /dev/null +++ b/docker-compose-proxy.yml @@ -0,0 +1,62 @@ +version: "3.7" +services: + mongodb: + image: mongo:latest + container_name: mongodb + volumes: + - ./mongo_data:/data/db + environment: + - MONGO_INITDB_DATABASE=forms + - MONGO_INITDB_ROOT_USERNAME=mongodbUser + - MONGO_INITDB_ROOT_PASSWORD=mongodbPass + ports: + - "27017:27017" + + mongo-express: + container_name: mongo-express + depends_on: + - mongodb + image: mongo-express:latest + environment: + - ME_CONFIG_MONGODB_SERVER=mongodb + - ME_CONFIG_MONGODB_PORT=27017 + - ME_CONFIG_MONGODB_ADMINUSERNAME=mongodbUser + - ME_CONFIG_MONGODB_ADMINPASSWORD=mongodbPass + - ME_CONFIG_BASICAUTH_USERNAME=expressUser + - ME_CONFIG_BASICAUTH_PASSWORD=expressPass + - ME_CONFIG_MONGODB_ENABLE_ADMIN=true + - ME_CONFIG_OPTIONS_EDITORTHEME=default + ports: + - "8081:8081" + + node: + depends_on: + - mongodb + image: avaliacao-imovel-rural/air-backend + container_name: air-backend + build: + context: . + args: + - HTTP_PROXY=http://192.168.128.1:3128 + - HTTPS_PROXY=http://192.168.128.1:3128 + - http_proxy=http://192.168.128.1:3128 + - https_proxy=http://192.168.128.1:3128 + ports: + - "3001:3001" + env_file: + - .env + environment: + - NODEJS_HOST=0.0.0.0 + - NODEJS_PORT=3001 + - MONGO_DB_HOST=mongodb + - MONGO_DB_PORT=27017 + - MONGO_DB_URL=mongodb://mongodb:27017/analise-agro?authSource=admin + - MONGO_DB_USER=mongodbUser + - MONGO_DB_PWD=mongodbPass + +networks: + default: + ipam: + driver: default + config: + - subnet: 172.17.1.0/24 diff --git a/docker-compose.debug.yml b/docker-compose.debug.yml new file mode 100644 index 0000000..f03fc95 --- /dev/null +++ b/docker-compose.debug.yml @@ -0,0 +1,14 @@ +version: '2.1' + +services: + es6-nodejs: + image: es6-nodejs + container_name: es6-nodejs + build: . + environment: + NODE_ENV: development + ports: + - 3001:3001 + - 9229:9229 + ## set your startup file here + command: node --inspect=0.0.0.0:9229 index.js \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..cd35344 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.7' + +services: + es6-nodejs: + image: nodejs-soap-test + container_name: nodejs-soap-test + build: . + volumes: + - ./src:/usr/src/app/src + - ./public:/usr/src/app/public + ports: + - 6001:6001 + environment: + - NODEJS_PORT=6001 + command: ["npm","run","watch"] diff --git a/nodemon.json b/nodemon.json new file mode 100644 index 0000000..db5df7a --- /dev/null +++ b/nodemon.json @@ -0,0 +1,5 @@ +{ + "exec": "npm run dev", + "watch": ["src/*", "public/*"], + "ext": "js, html, css, json, xml" + } \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..d8b6e1a --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "es6-nodejs", + "version": "0.0.0", + "private": true, + "scripts": { + "start": "npm run prod", + "server": "babel-node ./src/bin/www", + "server:prod": "node ./dist/bin/www", + "dev": "NODE_ENV=development npm-run-all server", + "clean": "rimraf dist", + "build": "babel ./src --out-dir dist", + "prod": "NODE_ENV=production npm-run-all clean build server:prod", + "watch": "nodemon" + }, + "dependencies": { + "cookie-parser": "^1.4.5", + "debug": "^4.1.1", + "express": "^4.17.1", + "morgan": "^1.10.0", + "npm-run-all": "^4.1.5", + "rimraf": "^3.0.2", + "axios": "0.19.2", + "soap": "^0.31.0", + "easy-soap-request": "^3.3.1", + "fast-xml-parser": "^3.17.4", + "xml2js": "0.4.23", + "colors": "1.4.0" + }, + "devDependencies": { + "@babel/cli": "^7.10.1", + "@babel/core": "^7.10.2", + "@babel/node": "^7.10.1", + "@babel/preset-env": "^7.10.2", + "nodemon": "^2.0.4" + } +} diff --git a/src/bin/backup.js b/src/bin/backup.js new file mode 100644 index 0000000..dbe0a8e --- /dev/null +++ b/src/bin/backup.js @@ -0,0 +1,78 @@ +import express from "express"; +import soapRequest from "easy-soap-request"; +import fs from "fs"; +import colors from "colors"; +import xmlParser from "fast-xml-parser"; +import xml2js from "xml2js"; +import util from "util"; +import soap from "soap"; + +const parser = new xml2js.Parser({ explicitArray: false }); + +// colors +colors.enable(); + +// express app +const app = express(); +const port = process.env.NODEJS_PORT || 3001; + +app.listen(port, () => { + console.log(`Express app running on Port: ${port}`.green); +}); + +// data +const url = "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS?method=getValor"; +const headers = { + "user-agent": "AIR-nodejs", + "Content-Type": "text/xml;charset=UTF-8", + soapAction: "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS/getValor", +}; +const xml = `\ + + + + + 4392 + 18/06/2020 + + + +`; + +// express routes +const routes = express.Router(); +app.use("/", routes); + +// routes controller +routes.route("").get((req, res) => { + parser.parseString(xml, function (err, result) { + console.log("XML".red); + console.log(util.inspect(result, false, null)); + res.send(result); + console.log("Drilling Down".red); + console.log(util.inspect(result["soapenv:Envelope"]["soapenv:Body"].getValor.data, false, null)); + }); +}); + +routes.route("/soap/xmlParser").get(async (req, res) => { + // parse envelope + const parsedEnvelope = xmlParser.parse(xml); + const newDate = "01/06/2020"; + console.log("Envelope".green, parsedEnvelope["soapenv:Envelope"]["soapenv:Body"].getValor.data); + + const { response } = await soapRequest({ + url: url, + headers: sampleHeaders, + xml: xml, + timeout: 1000, + }); // Optional timeout parameter(milliseconds) + const { headers, body, statusCode } = response; + console.log(headers); + console.log(body); + console.log(statusCode); + const parsedXML = xmlParser.parse(body); + const responseValue = parsedXML["soapenv:Envelope"]["soapenv:Body"].multiRef; + const responseObject = parsedEnvelope["soapenv:Envelope"]["soapenv:Body"].getValor.data; + console.log(`CDI (${responseObject}): ${responseValue}`.green); + res.send("done"); +}); diff --git a/src/bin/backup_axios.js b/src/bin/backup_axios.js new file mode 100644 index 0000000..492f12c --- /dev/null +++ b/src/bin/backup_axios.js @@ -0,0 +1,53 @@ +import express from "express"; +import colors from "colors"; +import axios from "axios"; +import util from "util" + +// colors +colors.enable(); + +// express app +const app = express(); +const port = process.env.NODEJS_PORT || 3001; + +app.listen(port, () => { + console.log(`Express app running on Port: ${port}`.green); +}); + +// data +const url = "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS?method=getValor"; +const headers = { + headers: { + "user-agent": "AIR-nodejs", + "Content-Type": "text/xml;charset=UTF-8", + soapAction: "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS/getValor", + }, +}; +const xml = `\ + + + + + 4392 + 18/06/2020 + + + +`; + +// express routes +const routes = express.Router(); +app.use("/", routes); + +// routes controller +routes.route("").get((request, response) => { + axios + .post(url, xml, headers) + .then((response) => { + console.log(`${util.inspect(response.data, false, null)}`.yellow); + }) + .catch((error) => { + console.log(error); + }); + response.send("done"); +}); diff --git a/src/bin/soap-envelope.xml b/src/bin/soap-envelope.xml new file mode 100644 index 0000000..348b1ea --- /dev/null +++ b/src/bin/soap-envelope.xml @@ -0,0 +1,9 @@ + + + + + 4392 + 18/06/2020 + + + \ No newline at end of file diff --git a/src/bin/www.js b/src/bin/www.js new file mode 100644 index 0000000..a9ef672 --- /dev/null +++ b/src/bin/www.js @@ -0,0 +1,50 @@ +import express from "express"; +import colors from "colors"; +import axios from "axios"; +import util from "util"; +// import soap from "soap"; + +// colors +colors.enable(); + +// express app +const app = express(); +const port = process.env.NODEJS_PORT || 3001; + +app.listen(port, () => { + console.log(`Express app running on Port: ${port}`.green); +}); + +//soap example +const soap = require("soap"); +const url = "https://www3.bcb.gov.br/wssgs/services/FachadaWSSGS?wsdl"; +const args = { codigoSerie: "4392", data: "18/06/2020" }; +soap + .createClientAsync(url) + .then((client) => { + return new Promise((resolve, reject) => { + client.getValor(args, (error, result) => { + error ? reject() : resolve(result); + }); + }); + }) + .then((result) => { + console.log(result); + }); + +// express routes +const routes = express.Router(); +app.use("/", routes); + +// routes controller +routes.route("").get((request, response) => { + axios + .post(url, xml, headers) + .then((response) => { + console.log(`${util.inspect(response.data, false, null)}`.yellow); + }) + .catch((error) => { + console.log(error); + }); + response.send("done"); +});