-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
112 lines (94 loc) · 3.41 KB
/
index.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const fetch = require('node-fetch');
const authRoutes = require('./../server/routes/authRoutes.js');
const mongoose = require('mongoose');
const cookieParser = require('cookie-parser');
const { requireAuth, checkUser } = require('./../server/middleware/authMiddleware.js');
const app = express();
const RiveScript = require('rivescript');
const {BrainService} = require("./models/BrainService_ArrayImpl.js");
const { Brain } = require('./models/Brain.js');
let brainServiceInstance;
let brainServiceAccessPoint = new BrainService({url:"http://localhost",port:3003});
const {BotIdentifier,BotService} = require("./models/Bots.js");
let botServiceInstance;
let botServiceAccessPoint = new BotService({url:"http://localhost",port:3001});
let botsArray;
//// Enable ALL CORS request
app.use(cors())
const port = 3003 //port du server
const port2 = 3005 //port d'écoute MongoDB
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(express.static('./../server/views'))
app.use(express.json());
app.use(cookieParser());
// view engine
app.set('views','./../server');//chemin vers le dossier 'views'
app.set('view engine', 'ejs');//recherche les fichiers ejs dans un dossier 'views'
//connection à Mongodb, avec l'utilisation user3, à la collection 'auth', sur le port 3005
const dbURI = 'mongodb+srv://user3:[email protected]/auth';
mongoose.connect(dbURI, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex:true })
.then((result) => app.listen(port2), console.log(`Connected to database on port ${port2}`))
.catch((err) => console.log(err));
//instanciation des deux brains : Standard et Client
let firstBrain ={
'id':0,
'name':'Standard'
};
let secondBrain ={
'id':1,
'name':'Client'
};
//lancement du serveur : ajout des deux brains dans la base de données
BrainService.create(brainServiceAccessPoint).then(ms=>{
brainServiceInstance=ms;
brainServiceInstance
.addBrain(firstBrain)
.catch((err)=>{console.log(err);});
brainServiceInstance
.addBrain(secondBrain)
.catch((err)=>{console.log(err);});
app.listen(port, () => {
console.log(`Brain server app listening at http://localhost:${port}`)
});
});
//pour toutes les requêtes de type 'get', on vérifie si un utilisateur est connecté via mongodb
//et le système d'authentification
app.get('*', checkUser);
//récupérer tous les bots du serveur de bots
app.get('/bot',async(req,res)=>{
botsArray = await getAllBots();
console.log(botsArray);
res.status(200).json(botsArray);
})
//afficher tous les brains au format JSON
app.get('/brain',async(req,res)=>{
try{
let myArrayOfBrains;
if( undefined == (myArrayOfBrains = brainServiceInstance.getBrains() )){
throw new Error("No brains to get");
}
res.status(200).json(myArrayOfBrains);
}
catch(err){
console.log(`Error ${err} thrown... stack is : ${err.stack}`);
res.status(404).send('NOT FOUND');
}
})
//renvoie la liste des cerveaux
async function getBrains(){
return brainServiceAccessPoint.getBrains();
}
//renvoie la liste des bots
async function getAllBots(){
return await botServiceAccessPoint.getAllBots();
}
//renvoie le bot d'identifiant 'botId'
async function getBotById(botId){
return await botServiceAccessPoint.getBotById(botId);
}
//fonction middleware qui lie le router 'authRoutes' à l'application
app.use(authRoutes);