formation 4 lat temu
rodzic
commit
d030f2fffb
3 zmienionych plików z 134 dodań i 0 usunięć
  1. 13 0
      express-server/Dockerfile
  2. 89 0
      express-server/index.js
  3. 32 0
      express-server/logging.js

+ 13 - 0
express-server/Dockerfile

@@ -0,0 +1,13 @@
+FROM node:8
+RUN mkdir -p /var/www/app
+WORKDIR /var/www/app
+COPY package.json /var/www/app
+RUN npm cache verify
+#RUN npm cache clean
+RUN npm install
+RUN npm install -g nodemon
+COPY . /var/www/app
+EXPOSE 4000
+#EXPOSE 9991
+CMD ["npm","start"]
+

+ 89 - 0
express-server/index.js

@@ -0,0 +1,89 @@
+const express = require('express');
+const bodyparser = require('body-parser');
+const mongoose = require('mongoose');
+// const cors = require('cors');
+// const config = require('./config/db.config');
+const userRoutes = require('./routes/user');
+const employeeRoutes = require('./routes/employee');
+const authRoutes = require('./routes/auth');
+const ticketRoutes = require('./routes/ticket');
+const emailsRoutes = require('./routes/emailing');
+const authGoogle = require('./routes/google');
+const authFacebook = require('./routes/facebook');
+const tirageRoutes = require('./routes/tirage');
+const contactRoutes = require('./routes/contact');
+const restaurantRoutes = require('./routes/restaurant');
+
+const Logger = require('./logging')
+
+//metrics
+const makeApiMiddleware = require("api-express-exporter"); 
+//const apiMetrics = require('prometheus-api-metrics');
+const promBundle = require("express-prom-bundle");
+const metricsMiddleware = promBundle({includeMethod: true, includePath: true});
+
+
+const app = express();
+
+Logger.error('hello world', 'Nan c est juste pour tester les logs')
+
+app.use(metricsMiddleware);
+//app.use(apiMetrics()); 
+
+
+//metrics
+app.use(makeApiMiddleware()); 
+
+app.get("/api", (req, res) => {
+    res.status(200).send("Api Works.");
+  });
+
+// var corsOptions = {
+//     origin: 'http://example.com',
+//     optionsSuccessStatus: 200 
+//   }
+
+//Définition des CORS Middleware 
+app.use(function(req, res, next) {
+    res.setHeader(
+      "Access-Control-Allow-Headers",
+      "X-Requested-With,content-type, Accept,Authorization,Origin"
+    );
+    res.setHeader("Access-Control-Allow-Origin", "*");
+    res.setHeader(
+      "Access-Control-Allow-Methods",
+      "GET, POST, OPTIONS, PUT, PATCH, DELETE"
+    );
+    res.setHeader("Access-Control-Allow-Credentials", true);
+    next();
+  });
+
+
+
+// parse requests  body params
+app.use(bodyparser.json());
+app.use(bodyparser.urlencoded({extended: true}));
+
+//simple route
+app.use('/api/users', userRoutes );
+app.use('/api/employees', employeeRoutes );
+app.use('/api/tickets', ticketRoutes );
+app.use('/api/auth',  authRoutes );
+app.use('/api/emails',  emailsRoutes );
+app.use('/api/auth/google',  authGoogle );
+app.use('/api/auth/facebook',  authFacebook );
+app.use('/api/tirage',  tirageRoutes );
+app.use('/api/contact',  contactRoutes );
+app.use('/api/restaurants',  restaurantRoutes );
+
+//connexion database
+require('./lib/db');
+
+
+
+
+//listen for requests 
+const PORT = process.env.PORT || 4000;
+app.listen(PORT, () => {
+    console.log(`Api listen on port ${PORT}.`);
+});

+ 32 - 0
express-server/logging.js

@@ -0,0 +1,32 @@
+
+const fs = require('fs')
+const path = require('path')
+const mkdirp = require('mkdirp')
+const dayjs = require('dayjs')
+
+const dayJS = (day) => {
+    day = day ? day : new Date()
+    return dayjs(day).locale('th')
+}
+
+const createDir = (name) => {
+    const createPath = path.join(name)
+    if (!fs.existsSync(createPath)) {
+        mkdirp.sync(createPath)
+    }
+}
+
+class Logger {
+
+     error(errorType, message){
+        createDir('log/root')
+        const pathLog = path.join(`log/root/${dayJS().format('YYYY-MM-DD')}-root.log`)
+        const dataLog = `[ERROR] [${errorType.toUpperCase()}] ${message}`
+        fs.writeFile(pathLog, dataLog + '\r\n', { flag: 'a' }, function (err) {
+            if (err) return console.log(err)
+        })
+    }
+
+}
+
+module.exports = new Logger()