-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapp.js
More file actions
92 lines (80 loc) · 2.72 KB
/
app.js
File metadata and controls
92 lines (80 loc) · 2.72 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
import express from 'express';
import cors from 'cors'
import session from "express-session";
import mongoose from "mongoose";
import { ParcelsController } from "./DBFunctions/parcels/parcels-controllers.js";
import { ShipGroupsController } from './DBFunctions/shipGroups/shipGroups-controllers.js';
import { PostController } from './DBFunctions/posts/posts-controllers.js';
import { UsersController } from "./DBFunctions/users/users-controllers.js";
import { AuthController } from "./DBFunctions/users/auth-controller.js";
import { createProxyMiddleware } from 'http-proxy-middleware';
import { WarehouseController } from "./DBFunctions/warehouse/warehouse-controller.js";
import { v2 as cloudinary } from 'cloudinary';
import ImageController from "./DBFunctions/cloudinary/image-upload-controllers.js";
import { config as dotenvConfig } from 'dotenv';
import statisticController from "./DBFunctions/statistic/statistic-controller.js";
import TrackParcelController from "./DBFunctions/tracking/track-parcel-controller.js";
import { ReviewController } from "./DBFunctions/reviews/reviews-controllers.js";
import ProductSearchController from "./DBFunctions/productSearch/product-search-controller.js";
dotenvConfig();
// -------------Set Ups----------------
// link to mongoDB
const CONNECTION_STRING = process.env.SHIPSHARE_WEB_KEY
|| 'mongodb://localhost:27017/web-shipshare';
console.log(CONNECTION_STRING);
mongoose.connect(CONNECTION_STRING);
// Return "https" URLs by setting secure: true
cloudinary.config({
secure: true,
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET,
});
// express & cors
const app = express();
app.use(express.json());
// session
app.use(
session({
secret: "any string",
resave: false,
saveUninitialized: true,
cookie: {
secure: true,
sameSite: "none",
},
})
);
// app.use(cors());
app.use(
cors({
credentials: true,
origin: [/^https:\/\/.*\.netlify\.app$/, "http://localhost:3000", "https://localhost:3000"],
})
);
app.use('/tracking', createProxyMiddleware({
target: 'https://api.tracktry.com',
changeOrigin: true,
pathRewrite: {
'^/tracking': '/v1',
},
on: {
error: (err, req, res) => {
console.log(err);
},
},
}));
app.set('trust proxy', true)
// -------------Controllers----------------
ParcelsController(app);
ShipGroupsController(app);
PostController(app);
UsersController(app);
AuthController(app);
WarehouseController(app);
ImageController(app);
statisticController(app);
TrackParcelController(app);
ReviewController(app);
ProductSearchController(app);
app.listen(4000)