-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathserver.js
More file actions
124 lines (92 loc) · 3.49 KB
/
server.js
File metadata and controls
124 lines (92 loc) · 3.49 KB
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
113
114
115
116
117
118
119
120
121
122
123
124
const dotenv = require("dotenv");
const isDev = process.env.NODE_ENV !== "production";
const envFile = isDev ? `.env.${process.env.NODE_ENV}` : ".env";
dotenv.config({ path: envFile });
const express = require("express");
const app = express();
const server = require("http").Server(app);
const io = require("socket.io")(server);
const next = require("next");
const routes = require("./routes");
const nextApp = next({ dev: isDev });
const handler = routes.getRequestHandler(nextApp);
const bodyParser = require("body-parser");
const axios = require("axios");
const compression = require("compression");
const mongoose = require("mongoose");
let urlMongo = "";
if (process.env.DB_USER) {
urlMongo = `mongodb://${process.env.DB_USER}:${process.env.DB_PASS}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}?authSource=admin&w=1`;
} else {
urlMongo = `mongodb://${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`;
}
mongoose.set("useCreateIndex", true);
mongoose.connect(urlMongo, {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
});
class Telegram {
sendTelegramMessage(message) {
const botId = process.env.TELEGRAM_BOTID;
const chatId = process.env.TELEGRAM_CHATID;
if (!botId || !chatId) {
return;
}
const telegramMsg = encodeURIComponent(message);
const url = `https://api.telegram.org/${botId}/sendMessage?chat_id=${chatId}&text=${telegramMsg}`;
axios.get(url);
}
}
const telegram = new Telegram();
const SocketService = require("./server/services/SocketService");
const SocketServiceInstance = new SocketService(io);
SocketServiceInstance.initialize();
const MercadoPagoService = require("./server/services/MercadoPagoService");
const MercadoPagoServiceInstance = new MercadoPagoService();
const CoffeeService = require("./server/services/CoffeeService");
const CoffeeServiceInstance = new CoffeeService();
const MercadoPagoController = require("./server/controllers/MercadoPagoController");
const MercadoPagoInstance = new MercadoPagoController(
CoffeeServiceInstance,
MercadoPagoServiceInstance,
SocketServiceInstance,
telegram
);
MercadoPagoInstance.createStore();
MercadoPagoInstance.deleteAllPosOld();
setInterval(() => {
MercadoPagoInstance.deleteAllPosOld();
}, 1000 * 60 * 10);
const CoffeeController = require("./server/controllers/CoffeeController");
const CoffeeInstance = new CoffeeController(
telegram,
CoffeeServiceInstance,
MercadoPagoInstance
);
CoffeeInstance.getCoffeesWithoutImages();
nextApp.prepare().then(() => {
app.use("/static", express.static("public"));
app.use(compression());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.post("/api/send_coffee", CoffeeInstance.sendCoffee);
app.post("/api/send_answer", CoffeeInstance.sendAnswer);
app.post("/api/delete_coffee", CoffeeInstance.deleteCoffee);
app.get("/api/coffees", CoffeeInstance.getCoffees);
app.get(
"/api/get_payment_by_coffe/:id",
CoffeeInstance.getPaymentByCoffeId
);
app.post("/api/ipn", MercadoPagoInstance.savePayment);
app.get("*", (req, res) => {
return handler(req, res);
});
server.listen(process.env.PORT, (err) => {
if (err) throw err;
console.log(`> Ready on http://localhost:${process.env.PORT}`);
});
console.log(
`Server started on port ${process.env.PORT} | Url: ${process.env.URL}`
);
});