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");
+});