Delete dist
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
b1f1269f97
commit
bd6d47987c
@ -1,48 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const express_1 = __importDefault(require("express"));
|
|
||||||
const cors_1 = __importDefault(require("cors"));
|
|
||||||
const config_1 = require("./config");
|
|
||||||
const cookie_parser_1 = __importDefault(require("cookie-parser"));
|
|
||||||
const body_parser_1 = __importDefault(require("body-parser"));
|
|
||||||
const mongoose_1 = __importDefault(require("mongoose"));
|
|
||||||
class App {
|
|
||||||
constructor(controllers, port) {
|
|
||||||
this.express = (0, express_1.default)();
|
|
||||||
this.port = port;
|
|
||||||
this.initDatabase();
|
|
||||||
this.initMiddleware();
|
|
||||||
this.initControllers(controllers);
|
|
||||||
}
|
|
||||||
initMiddleware() {
|
|
||||||
this.express.use((0, cors_1.default)());
|
|
||||||
this.express.use((0, cookie_parser_1.default)());
|
|
||||||
this.express.use(express_1.default.json());
|
|
||||||
this.express.use(express_1.default.urlencoded({ extended: false }));
|
|
||||||
this.express.use(body_parser_1.default.json());
|
|
||||||
this.express.use(body_parser_1.default.urlencoded({
|
|
||||||
extended: true
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
initControllers(controllers) {
|
|
||||||
controllers.forEach((controller) => {
|
|
||||||
this.express.use('/api', controller.router);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
listen() {
|
|
||||||
this.express.listen(this.port, () => {
|
|
||||||
console.log(`[server] : App listening on the port ${this.port}`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
initDatabase() {
|
|
||||||
const MONGO_URL = `mongodb+srv://FladDev:${config_1.MONGO_PASSWORD}@flad.mliekr2.mongodb.net/?retryWrites=true&w=majority`;
|
|
||||||
mongoose_1.default.connect(MONGO_URL)
|
|
||||||
.then(() => console.log("Connect to MongoDB database successfully"))
|
|
||||||
.catch(error => console.log("Error connecting : " + error));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.default = App;
|
|
||||||
//# sourceMappingURL=app.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";;;;;AAAA,sDAA+C;AAC/C,gDAAwB;AACxB,qCAA0C;AAC1C,kEAAyC;AACzC,8DAAqC;AAErC,wDAAgC;AAEhC,MAAM,GAAG;IAML,YAAY,WAAyB,EAAE,IAAY;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAA,iBAAO,GAAE,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,uBAAY,GAAE,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAU,CAAC,UAAU,CAAC;YACnC,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC,CAAC;IACR,CAAC;IAEO,eAAe,CAAC,WAAyB;QAC7C,WAAW,CAAC,OAAO,CAAC,CAAC,UAAsB,EAAE,EAAE;YAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM;QACT,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,YAAY;QAChB,MAAM,SAAS,GAAG,yBAAyB,uBAAc,wDAAwD,CAAC;QAClH,kBAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;aACtB,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;aACnE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;CACJ;AAED,kBAAe,GAAG,CAAC"}
|
|
@ -1,7 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.CLIENT_SECRET_SPOTIFY = exports.CLIENT_ID_SPOTIFY = exports.MONGO_PASSWORD = void 0;
|
|
||||||
exports.MONGO_PASSWORD = "ZXN11dj7VC0RUYwa"; //process.env.MONGO;
|
|
||||||
exports.CLIENT_ID_SPOTIFY = "cd55847a89324a9a9af11aa6726bc1f9";
|
|
||||||
exports.CLIENT_SECRET_SPOTIFY = "b49e81e3c3a643aa9ce1b2158219a2fb";
|
|
||||||
//# sourceMappingURL=config.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,kBAAkB,CAAC,CAAC,oBAAoB;AACzD,QAAA,iBAAiB,GAAG,kCAAkC,CAAC;AACvD,QAAA,qBAAqB,GAAG,kCAAkC,CAAC"}
|
|
@ -1,3 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
//# sourceMappingURL=IController.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"IController.js","sourceRoot":"","sources":["../../../src/controllers/interfaces/IController.ts"],"names":[],"mappings":""}
|
|
@ -1,131 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const express_1 = require("express");
|
|
||||||
const config_1 = require("../config");
|
|
||||||
const HttpException_1 = __importDefault(require("../exception/HttpException"));
|
|
||||||
const axios_1 = __importDefault(require("axios"));
|
|
||||||
const qs_1 = __importDefault(require("qs"));
|
|
||||||
class SpotifyController {
|
|
||||||
constructor() {
|
|
||||||
this.path = '/spotify';
|
|
||||||
this.router = (0, express_1.Router)();
|
|
||||||
this.API_URL = "https://accounts.spotify.com/api/token";
|
|
||||||
this.CALLBACK = 'http://localhost:8080/api/spotify/callback';
|
|
||||||
this.SCOPES = 'user-read-private user-read-email user-read-playback-state user-read-currently-playing user-read-recently-played playlist-modify-public ugc-image-upload user-modify-playback-state';
|
|
||||||
this.clientRedirect = 'spotify_final_redirect-uri-key';
|
|
||||||
this.login = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
|
|
||||||
try {
|
|
||||||
const redirectResponse = req.query.redirectUrl ? req.query.redirectUrl : req.headers.referer;
|
|
||||||
res.cookie(this.clientRedirect, redirectResponse);
|
|
||||||
res.redirect('https://accounts.spotify.com/authorize?' +
|
|
||||||
qs_1.default.stringify({
|
|
||||||
response_type: 'code',
|
|
||||||
client_id: config_1.CLIENT_ID_SPOTIFY,
|
|
||||||
scope: this.SCOPES,
|
|
||||||
redirect_uri: this.CALLBACK,
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
next(new HttpException_1.default(400, "Cannot connect: " + error.message));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.getRefreshToken = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
|
|
||||||
try {
|
|
||||||
const params = req.query.refresh_token;
|
|
||||||
if (!req.query.refresh_token) {
|
|
||||||
return res.json({
|
|
||||||
"error": "Parameter refresh_token missing"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
let authOptions = {
|
|
||||||
method: 'POST',
|
|
||||||
url: 'https://accounts.spotify.com/api/token',
|
|
||||||
data: qs_1.default.stringify({
|
|
||||||
grant_type: 'refresh_token',
|
|
||||||
refresh_token: params
|
|
||||||
}),
|
|
||||||
headers: {
|
|
||||||
'Authorization': 'Basic ' + (Buffer.from(config_1.CLIENT_ID_SPOTIFY + ':' + config_1.CLIENT_SECRET_SPOTIFY).toString('base64')),
|
|
||||||
'Content-Type': 'application/x-www-form-urlencoded'
|
|
||||||
},
|
|
||||||
json: true
|
|
||||||
};
|
|
||||||
(0, axios_1.default)(authOptions)
|
|
||||||
.then(session => {
|
|
||||||
if (session.status === 200) {
|
|
||||||
console.log('### Information : responce ###' + JSON.stringify(session.data));
|
|
||||||
console.log('### Information : refresh_token ###' + session.data.refresh_token);
|
|
||||||
res.send({
|
|
||||||
"access_token": session.data.access_token,
|
|
||||||
"refresh_token": session.data.refresh_token,
|
|
||||||
"expires_in": session.data.expires_in
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
console.log("goood");
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
console.log("errur");
|
|
||||||
next(new HttpException_1.default(400, 'Cannot create post'));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.getAccessToken = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
|
|
||||||
let code = req.query.code;
|
|
||||||
let storedredirectUri = req.cookies ? req.cookies[this.clientRedirect] : null;
|
|
||||||
var authOptions = {
|
|
||||||
method: 'POST',
|
|
||||||
url: this.API_URL,
|
|
||||||
data: qs_1.default.stringify({
|
|
||||||
code: code,
|
|
||||||
redirect_uri: this.CALLBACK,
|
|
||||||
grant_type: 'authorization_code'
|
|
||||||
}),
|
|
||||||
headers: {
|
|
||||||
'Authorization': 'Basic ' + (Buffer.from(config_1.CLIENT_ID_SPOTIFY + ':' + config_1.CLIENT_SECRET_SPOTIFY).toString('base64')),
|
|
||||||
'Content-Type': 'application/x-www-form-urlencoded'
|
|
||||||
},
|
|
||||||
json: true
|
|
||||||
};
|
|
||||||
try {
|
|
||||||
var resp = yield (0, axios_1.default)(authOptions);
|
|
||||||
if (resp.status === 200) {
|
|
||||||
let access_token = resp.data.access_token;
|
|
||||||
let expiration = resp.data.expires_in;
|
|
||||||
let refresh = resp.data.refresh_token;
|
|
||||||
console.log(access_token);
|
|
||||||
res.clearCookie(this.clientRedirect);
|
|
||||||
res.redirect(`${storedredirectUri}?` +
|
|
||||||
qs_1.default.stringify({
|
|
||||||
"access_token": access_token,
|
|
||||||
"expires_in": expiration,
|
|
||||||
"refresh_token": refresh
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
next(new HttpException_1.default(400, 'Error connection: ' + error.message));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.initRoutes();
|
|
||||||
}
|
|
||||||
initRoutes() {
|
|
||||||
this.router.get(`${this.path}/exchange`, this.login);
|
|
||||||
this.router.get(`${this.path}/callback`, this.getAccessToken);
|
|
||||||
this.router.get(`${this.path}/refresh`, this.getRefreshToken);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.default = SpotifyController;
|
|
||||||
//# sourceMappingURL=spotifyController.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"spotifyController.js","sourceRoot":"","sources":["../../src/controllers/spotifyController.ts"],"names":[],"mappings":"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"}
|
|
@ -1,81 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const express_1 = require("express");
|
|
||||||
const HttpException_1 = __importDefault(require("../exception/HttpException"));
|
|
||||||
const UserService_1 = __importDefault(require("../services/UserService"));
|
|
||||||
const UserValidation_1 = __importDefault(require("../middlewares/UserValidation"));
|
|
||||||
const validationMiddleware_1 = __importDefault(require("../middlewares/validationMiddleware"));
|
|
||||||
const authMiddleware_1 = __importDefault(require("../middlewares/authMiddleware"));
|
|
||||||
const LocationService_1 = __importDefault(require("../services/LocationService"));
|
|
||||||
class UserController {
|
|
||||||
constructor() {
|
|
||||||
this.path = '/users';
|
|
||||||
this.router = (0, express_1.Router)();
|
|
||||||
this.userService = new UserService_1.default();
|
|
||||||
this.locationService = new LocationService_1.default();
|
|
||||||
this.register = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
|
|
||||||
try {
|
|
||||||
const { name, email, password, idSpotify } = req.body;
|
|
||||||
const token = yield this.userService.register(name, email, password, idSpotify);
|
|
||||||
res.status(201).json({ token });
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
next(new HttpException_1.default(400, error.message));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.login = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
|
|
||||||
try {
|
|
||||||
const { email, password } = req.body;
|
|
||||||
const token = yield this.userService.login(email, password);
|
|
||||||
res.status(200).json({ token });
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
next(new HttpException_1.default(400, error.message));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.getUser = (req, res, next) => {
|
|
||||||
if (!req.user) {
|
|
||||||
return next(new HttpException_1.default(404, 'No logged in user'));
|
|
||||||
}
|
|
||||||
res.status(200).send({ data: req.user });
|
|
||||||
};
|
|
||||||
this.getUserNext = (req, res, next) => __awaiter(this, void 0, void 0, function* () {
|
|
||||||
try {
|
|
||||||
const longitude = Number(req.query.longitude);
|
|
||||||
const latitude = Number(req.query.latitude);
|
|
||||||
if (isNaN(longitude) || isNaN(latitude)) {
|
|
||||||
console.log('Unable to convert string to number');
|
|
||||||
throw new Error('Unable to convert string to number');
|
|
||||||
}
|
|
||||||
const userId = req.user.id;
|
|
||||||
const musicId = String(req.query.currentMusic);
|
|
||||||
const data = yield this.locationService.getNearUser(userId, musicId, latitude, longitude);
|
|
||||||
res.status(201).send(data);
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
next(new HttpException_1.default(400, 'Cannot create get netUser: ' + error.message));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.initRoutes();
|
|
||||||
}
|
|
||||||
initRoutes() {
|
|
||||||
this.router.post(`${this.path}/register`, (0, validationMiddleware_1.default)(UserValidation_1.default.register), this.register);
|
|
||||||
this.router.post(`${this.path}/login`, (0, validationMiddleware_1.default)(UserValidation_1.default.login), this.login);
|
|
||||||
this.router.get(`${this.path}`, authMiddleware_1.default, this.getUser);
|
|
||||||
this.router.get(`${this.path}/nextTo`, authMiddleware_1.default, this.getUserNext);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.default = UserController;
|
|
||||||
//# sourceMappingURL=userController.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"userController.js","sourceRoot":"","sources":["../../src/controllers/userController.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,qCAAkF;AAElF,+EAAuD;AAEvD,0EAAkD;AAClD,mFAAqD;AACrD,+FAAuE;AACvE,mFAAyD;AACzD,kFAA0D;AAE1D,MAAM,cAAc;IAMhB;QALO,SAAI,GAAG,QAAQ,CAAC;QAChB,WAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;QACjB,gBAAW,GAAG,IAAI,qBAAW,EAAE,CAAC;QAChC,oBAAe,GAAG,IAAI,yBAAe,EAAE,CAAC;QAqBxC,aAAQ,GAAG,CACf,GAAY,EACZ,GAAa,EACb,IAAkB,EACM,EAAE;YAC1B,IAAI;gBACA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CACzC,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,SAAS,CACZ,CAAC;gBACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aACnC;YAAC,OAAO,KAAU,EAAE;gBACjB,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;aAC/C;QACL,CAAC,CAAA,CAAC;QAEM,UAAK,GAAG,CACZ,GAAY,EACZ,GAAa,EACb,IAAkB,EACM,EAAE;YAC1B,IAAI;gBACA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;gBACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC5D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aACnC;YAAC,OAAO,KAAU,EAAE;gBACjB,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;aAC/C;QACL,CAAC,CAAA,CAAC;QAEM,YAAO,GAAG,CACd,GAAY,EACZ,GAAa,EACb,IAAkB,EACH,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;gBACX,OAAO,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC;aAC5D;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC;QAEM,gBAAW,GAAG,CAClB,GAAY,EACZ,GAAa,EACb,IAAkB,EACM,EAAE;YAC1B,IAAI;gBACA,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC5C,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;oBACrC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;oBAClD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;iBACzD;gBACD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC/C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC1F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC9B;YACD,OAAO,KAAU,EAAE;gBACf,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,6BAA6B,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;aAC/E;QACL,CAAC,CAAA,CAAA;QAlFG,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,IAAI,CAAC,IAAI,WAAW,EACvB,IAAA,8BAAoB,EAAC,wBAAS,CAAC,QAAQ,CAAC,EACxC,IAAI,CAAC,QAAQ,CAChB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,IAAI,CAAC,IAAI,QAAQ,EACpB,IAAA,8BAAoB,EAAC,wBAAS,CAAC,KAAK,CAAC,EACrC,IAAI,CAAC,KAAK,CACb,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,wBAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,SAAS,EAAE,wBAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5E,CAAC;CAmEJ;AAED,kBAAe,cAAc,CAAC"}
|
|
@ -1,24 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const mongoose_1 = require("mongoose");
|
|
||||||
const locationSchema = new mongoose_1.Schema({
|
|
||||||
userId: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
unique: true,
|
|
||||||
},
|
|
||||||
musicId: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
latitude: {
|
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
longitude: {
|
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
}
|
|
||||||
}, { timestamps: true });
|
|
||||||
exports.default = (0, mongoose_1.model)('Location', locationSchema);
|
|
||||||
//# sourceMappingURL=LocationSchema.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"LocationSchema.js","sourceRoot":"","sources":["../../src/database/LocationSchema.ts"],"names":[],"mappings":";;AAAA,uCAAyC;AAGzC,MAAM,cAAc,GAAG,IAAI,iBAAM,CAAC;IAC9B,MAAM,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;KACf;IACD,OAAO,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACjB;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACjB;IACD,SAAS,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACjB;CACJ,EACG,EAAE,UAAU,EAAE,IAAI,EAAE,CACvB,CAAC;AAEF,kBAAe,IAAA,gBAAK,EAAW,UAAU,EAAE,cAAc,CAAC,CAAC"}
|
|
@ -1,55 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const mongoose_1 = require("mongoose");
|
|
||||||
const bcrypt_1 = __importDefault(require("bcrypt"));
|
|
||||||
const userSchema = new mongoose_1.Schema({
|
|
||||||
idSpotify: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
unique: true
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
unique: true
|
|
||||||
},
|
|
||||||
email: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
unique: true,
|
|
||||||
trim: true
|
|
||||||
},
|
|
||||||
password: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
}, { timestamps: true });
|
|
||||||
userSchema.pre('save', function (next) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
if (!this.isModified('password')) {
|
|
||||||
return next();
|
|
||||||
}
|
|
||||||
const hash = yield bcrypt_1.default.hash(this.password, 8);
|
|
||||||
this.password = hash;
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
userSchema.methods.isValidPassword = function (password) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
return yield bcrypt_1.default.compare(password, this.password);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.default = (0, mongoose_1.model)('User', userSchema);
|
|
||||||
//# sourceMappingURL=UserSchema.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"UserSchema.js","sourceRoot":"","sources":["../../src/database/UserSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,uCAAyC;AACzC,oDAA4B;AAE5B,MAAM,UAAU,GAAG,IAAI,iBAAM,CAAC;IAC1B,SAAS,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;KACf;IACD,IAAI,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;KACf;IACD,KAAK,EAAE;QACH,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,IAAI;KACb;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACjB;CACJ,EACG,EAAE,UAAU,EAAE,IAAI,EAAE,CACvB,CAAC;AAEF,UAAU,CAAC,GAAG,CAAO,MAAM,EAAE,UAAgB,IAAI;;QAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC9B,OAAO,IAAI,EAAE,CAAC;SACjB;QACD,MAAM,IAAI,GAAG,MAAM,gBAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,EAAE,CAAC;IACX,CAAC;CAAA,CAAC,CAAC;AAEH,UAAU,CAAC,OAAO,CAAC,eAAe,GAAG,UACjC,QAAgB;;QAEhB,OAAO,MAAM,gBAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;CAAA,CAAC;AAEF,kBAAe,IAAA,gBAAK,EAAO,MAAM,EAAE,UAAU,CAAC,CAAC"}
|
|
@ -1,11 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
class HttpException extends Error {
|
|
||||||
constructor(status, message) {
|
|
||||||
super(message);
|
|
||||||
this.status = status;
|
|
||||||
this.message = message;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.default = HttpException;
|
|
||||||
//# sourceMappingURL=HttpException.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"HttpException.js","sourceRoot":"","sources":["../../src/exception/HttpException.ts"],"names":[],"mappings":";;AAAA,MAAM,aAAc,SAAQ,KAAK;IAI7B,YAAY,MAAc,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ;AAED,kBAAe,aAAa,CAAC"}
|
|
@ -1,14 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const app_1 = __importDefault(require("./app"));
|
|
||||||
const spotifyController_1 = __importDefault(require("./controllers/spotifyController"));
|
|
||||||
const userController_1 = __importDefault(require("./controllers/userController"));
|
|
||||||
const dotenv_1 = __importDefault(require("dotenv"));
|
|
||||||
dotenv_1.default.config();
|
|
||||||
const app = new app_1.default([new spotifyController_1.default(), new userController_1.default()], Number(process.env.PORT));
|
|
||||||
console.log(process.env.TMP);
|
|
||||||
app.listen();
|
|
||||||
//# sourceMappingURL=index.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,wFAAgE;AAChE,kFAA0D;AAC1D,oDAA2B;AAE3B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAChB,MAAM,GAAG,GAAG,IAAI,aAAG,CACf,CAAC,IAAI,2BAAiB,EAAE,EAAE,IAAI,wBAAc,EAAE,CAAC,EAC/C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAC3B,CAAC;AAEF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAE5B,GAAG,CAAC,MAAM,EAAE,CAAC"}
|
|
@ -1,18 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const joi_1 = __importDefault(require("joi"));
|
|
||||||
const register = joi_1.default.object({
|
|
||||||
name: joi_1.default.string().max(30).required(),
|
|
||||||
email: joi_1.default.string().email().required(),
|
|
||||||
password: joi_1.default.string().min(6).required(),
|
|
||||||
idSpotify: joi_1.default.string(),
|
|
||||||
});
|
|
||||||
const login = joi_1.default.object({
|
|
||||||
email: joi_1.default.string().email().required(),
|
|
||||||
password: joi_1.default.string().required(),
|
|
||||||
});
|
|
||||||
exports.default = { register, login };
|
|
||||||
//# sourceMappingURL=UserValidation.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"UserValidation.js","sourceRoot":"","sources":["../../src/middlewares/UserValidation.ts"],"names":[],"mappings":";;;;;AAAA,8CAAsB;AAEtB,MAAM,QAAQ,GAAG,aAAG,CAAC,MAAM,CAAC;IACxB,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,aAAG,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,aAAG,CAAC,MAAM,CAAC;IACrB,KAAK,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,kBAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC"}
|
|
@ -1,46 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
||||||
const UserSchema_1 = __importDefault(require("../database/UserSchema"));
|
|
||||||
const TokenService_1 = __importDefault(require("../services/TokenService"));
|
|
||||||
const HttpException_1 = __importDefault(require("../exception/HttpException"));
|
|
||||||
function authMiddleware(req, res, next) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
const bearer = req.headers.authorization;
|
|
||||||
if (!bearer || !bearer.startsWith('Bearer ')) {
|
|
||||||
return next(new HttpException_1.default(401, 'Unauthorized'));
|
|
||||||
}
|
|
||||||
const accessToken = bearer.split('Bearer')[1].trim();
|
|
||||||
try {
|
|
||||||
const payload = yield TokenService_1.default.verifyToken(accessToken);
|
|
||||||
if (payload instanceof jsonwebtoken_1.default.JsonWebTokenError) {
|
|
||||||
return next(new HttpException_1.default(401, 'Unauthorized'));
|
|
||||||
}
|
|
||||||
const user = yield UserSchema_1.default.findById(payload.id)
|
|
||||||
.select('-password')
|
|
||||||
.exec();
|
|
||||||
if (!user) {
|
|
||||||
return next(new HttpException_1.default(401, 'Unauthorized'));
|
|
||||||
}
|
|
||||||
req.user = user;
|
|
||||||
return next();
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
return next(new HttpException_1.default(401, 'Unauthorized'));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
exports.default = authMiddleware;
|
|
||||||
//# sourceMappingURL=authMiddleware.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"authMiddleware.js","sourceRoot":"","sources":["../../src/middlewares/authMiddleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,gEAA+B;AAE/B,wEAAgD;AAChD,4EAA6C;AAC7C,+EAAuD;AAEvD,SAAe,cAAc,CACzB,GAAY,EACZ,GAAa,EACb,IAAkB;;QAElB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAEzC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;SACvD;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI;YACA,MAAM,OAAO,GAAkC,MAAM,sBAAK,CAAC,WAAW,CAClE,WAAW,CACd,CAAC;YAEF,IAAI,OAAO,YAAY,sBAAG,CAAC,iBAAiB,EAAE;gBAC1C,OAAO,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;aACvD;YAED,MAAM,IAAI,GAAG,MAAM,oBAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;iBAC7C,MAAM,CAAC,WAAW,CAAC;iBACnB,IAAI,EAAE,CAAC;YAEZ,IAAI,CAAC,IAAI,EAAE;gBACP,OAAO,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;aACvD;YAED,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAEhB,OAAO,IAAI,EAAE,CAAC;SACjB;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,IAAI,CAAC,IAAI,uBAAa,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;SACvD;IACL,CAAC;CAAA;AAED,kBAAe,cAAc,CAAC"}
|
|
@ -1,34 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
function validationMiddleware(schema) {
|
|
||||||
return (req, res, next) => __awaiter(this, void 0, void 0, function* () {
|
|
||||||
const validationOptions = {
|
|
||||||
abortEarly: false,
|
|
||||||
allowUnknown: true,
|
|
||||||
stripUnknown: true,
|
|
||||||
};
|
|
||||||
try {
|
|
||||||
const value = yield schema.validateAsync(req.body, validationOptions);
|
|
||||||
req.body = value;
|
|
||||||
next();
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
const errors = [];
|
|
||||||
e.details.forEach((error) => {
|
|
||||||
errors.push(error.message);
|
|
||||||
});
|
|
||||||
res.status(400).send({ errors: errors });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
exports.default = validationMiddleware;
|
|
||||||
//# sourceMappingURL=validationMiddleware.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"validationMiddleware.js","sourceRoot":"","sources":["../../src/middlewares/validationMiddleware.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,SAAS,oBAAoB,CAAC,MAAkB;IAC5C,OAAO,CACH,GAAY,EACZ,GAAa,EACb,IAAkB,EACL,EAAE;QACf,MAAM,iBAAiB,GAAG;YACtB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI;SACrB,CAAC;QAEF,IAAI;YACA,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CACpC,GAAG,CAAC,IAAI,EACR,iBAAiB,CACpB,CAAC;YACF,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI,EAAE,CAAC;SACV;QAAC,OAAO,CAAM,EAAE;YACb,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAA8B,EAAE,EAAE;gBACjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;SAC5C;IACL,CAAC,CAAA,CAAC;AACN,CAAC;AAED,kBAAe,oBAAoB,CAAC"}
|
|
@ -1,17 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.Location = exports.UserLocation = void 0;
|
|
||||||
const mongoose_1 = require("mongoose");
|
|
||||||
class UserLocation {
|
|
||||||
constructor(userId, musicId, latitude, longitude) {
|
|
||||||
this.userId = userId;
|
|
||||||
this.musicId = musicId;
|
|
||||||
this.latitude = latitude;
|
|
||||||
this.longitude = longitude;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.UserLocation = UserLocation;
|
|
||||||
class Location extends mongoose_1.Document {
|
|
||||||
}
|
|
||||||
exports.Location = Location;
|
|
||||||
//# sourceMappingURL=Location.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"Location.js","sourceRoot":"","sources":["../../src/models/Location.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAEpC,MAAa,YAAY;IAKrB,YAAY,MAAc,EAAE,OAAgB,EAAC,QAAgB,EAAE,SAAiB;QAC5E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;CACJ;AAXD,oCAWC;AAED,MAAa,QAAS,SAAQ,mBAAQ;CAKrC;AALD,4BAKC"}
|
|
@ -1,3 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
//# sourceMappingURL=Token.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"Token.js","sourceRoot":"","sources":["../../src/models/Token.ts"],"names":[],"mappings":""}
|
|
@ -1,3 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
//# sourceMappingURL=User.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":""}
|
|
@ -1,65 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const Location_1 = require("../models/Location");
|
|
||||||
const LocationSchema_1 = __importDefault(require("../database/LocationSchema"));
|
|
||||||
class LocationService {
|
|
||||||
constructor() {
|
|
||||||
this.locations = LocationSchema_1.default;
|
|
||||||
}
|
|
||||||
getNearUser(userId, musicId, latitude, longitude) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
yield this.locations.findOneAndUpdate({ userId }, { userId, musicId, latitude, longitude }, { upsert: true });
|
|
||||||
const snapshot = yield this.locations.find({ userId: { $ne: userId } });
|
|
||||||
if (!snapshot.length) {
|
|
||||||
console.log('No matching documents.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let usersLocation = [];
|
|
||||||
snapshot.forEach(doc => {
|
|
||||||
usersLocation.push(new Location_1.UserLocation(doc.userId, doc.musicId, doc.latitude, doc.longitude));
|
|
||||||
});
|
|
||||||
const listUser = {};
|
|
||||||
usersLocation.forEach(user => {
|
|
||||||
const distance = this.distanceBetween(latitude, longitude, user.latitude, user.longitude);
|
|
||||||
if (distance <= 100) {
|
|
||||||
listUser[user.userId] = user.musicId;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return { listUser };
|
|
||||||
});
|
|
||||||
}
|
|
||||||
distanceBetween(lat1, lon1, lat2, lon2) {
|
|
||||||
if ((lat1 == lat2) && (lon1 == lon2)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var radlat1 = Math.PI * lat1 / 180;
|
|
||||||
var radlat2 = Math.PI * lat2 / 180;
|
|
||||||
var theta = lon1 - lon2;
|
|
||||||
var radtheta = Math.PI * theta / 180;
|
|
||||||
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
|
|
||||||
if (dist > 1) {
|
|
||||||
dist = 1;
|
|
||||||
}
|
|
||||||
dist = Math.acos(dist);
|
|
||||||
dist = dist * 180 / Math.PI;
|
|
||||||
dist = dist * 60 * 1.1515;
|
|
||||||
dist = dist * 1.609344;
|
|
||||||
return dist;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.default = LocationService;
|
|
||||||
//# sourceMappingURL=LocationService.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"LocationService.js","sourceRoot":"","sources":["../../src/services/LocationService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,iDAAkD;AAClD,gFAAwD;AAExD,MAAM,eAAe;IAArB;QACY,cAAS,GAAG,wBAAc,CAAC;IAmDvC,CAAC;IAlDgB,WAAW,CAAC,MAAc,EAAE,OAAe,EAAE,QAAgB,EAAE,SAAiB;;YACzF,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CACjC,EAAE,MAAM,EAAE,EACV,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EACxC,EAAE,MAAM,EAAE,IAAI,EAAE,CACnB,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAClB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;gBACtC,OAAO;aACV;YAED,IAAI,aAAa,GAAmB,EAAE,CAAC;YACvC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACnB,aAAa,CAAC,IAAI,CAAC,IAAI,uBAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1F,IAAI,QAAQ,IAAI,GAAG,EAAE;oBACjB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;iBACxC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,QAAQ,EAAE,CAAC;QACxB,CAAC;KAAA;IAEO,eAAe,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;QAC1E,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;YAClC,OAAO,CAAC,CAAC;SACZ;aACI;YACD,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC;YACnC,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC;YACnC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;YACxB,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,GAAG,CAAC;YACrC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE9G,IAAI,IAAI,GAAG,CAAC,EAAE;gBACV,IAAI,GAAG,CAAC,CAAC;aACZ;YAED,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;YAC1B,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;YAEvB,OAAO,IAAI,CAAC;SACf;IACL,CAAC;CACJ;AAED,kBAAe,eAAe,CAAC"}
|
|
@ -1,34 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.verifyToken = exports.createToken = void 0;
|
|
||||||
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
||||||
const createToken = (user) => {
|
|
||||||
return jsonwebtoken_1.default.sign({ id: user._id }, "dave", {
|
|
||||||
expiresIn: '1d',
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.createToken = createToken;
|
|
||||||
const verifyToken = (token) => __awaiter(void 0, void 0, void 0, function* () {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
jsonwebtoken_1.default.verify(token, "dave", (err, payload) => {
|
|
||||||
if (err)
|
|
||||||
return reject(err);
|
|
||||||
resolve(payload);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
exports.verifyToken = verifyToken;
|
|
||||||
exports.default = { createToken: exports.createToken, verifyToken: exports.verifyToken };
|
|
||||||
//# sourceMappingURL=TokenService.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"TokenService.js","sourceRoot":"","sources":["../../src/services/TokenService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAA+B;AAIxB,MAAM,WAAW,GAAG,CAAC,IAAU,EAAU,EAAE;IAC9C,OAAO,sBAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAoB,EAAE;QACpD,SAAS,EAAE,IAAI;KAClB,CAAC,CAAC;AACP,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB;AAEK,MAAM,WAAW,GAAG,CACvB,KAAa,EACoB,EAAE;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,sBAAG,CAAC,MAAM,CACN,KAAK,EACL,MAAoB,EACpB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YACb,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,CAAC,OAAgB,CAAC,CAAC;QAC9B,CAAC,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAA,CAAC;AAbW,QAAA,WAAW,eAatB;AAEF,kBAAe,EAAE,WAAW,EAAX,mBAAW,EAAE,WAAW,EAAX,mBAAW,EAAE,CAAC"}
|
|
@ -1,53 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const UserSchema_1 = __importDefault(require("../database/UserSchema"));
|
|
||||||
const TokenService_1 = __importDefault(require("./TokenService"));
|
|
||||||
class UserService {
|
|
||||||
constructor() {
|
|
||||||
this.user = UserSchema_1.default;
|
|
||||||
}
|
|
||||||
register(name, email, password, idSpotify) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
try {
|
|
||||||
const user = yield this.user.create({
|
|
||||||
name,
|
|
||||||
email,
|
|
||||||
password,
|
|
||||||
idSpotify
|
|
||||||
});
|
|
||||||
return TokenService_1.default.createToken(user);
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
throw new Error(error.message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
login(email, password) {
|
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
|
||||||
const user = yield this.user.findOne({ email });
|
|
||||||
if (!user) {
|
|
||||||
throw new Error('Wrong credentials given');
|
|
||||||
}
|
|
||||||
if (yield user.isValidPassword(password)) {
|
|
||||||
return TokenService_1.default.createToken(user);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new Error('Wrong credentials given');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.default = UserService;
|
|
||||||
//# sourceMappingURL=UserService.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"UserService.js","sourceRoot":"","sources":["../../src/services/UserService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,wEAAgD;AAChD,kEAAmC;AAEnC,MAAM,WAAW;IAAjB;QACY,SAAI,GAAG,oBAAU,CAAC;IAmC9B,CAAC;IAjCgB,QAAQ,CACjB,IAAY,EACZ,KAAa,EACb,QAAgB,EAChB,SAAiB;;YAEjB,IAAI;gBACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;oBAChC,IAAI;oBACJ,KAAK;oBACL,QAAQ;oBACR,SAAS;iBACZ,CAAC,CAAC;gBACH,OAAO,sBAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAClC;YAAC,OAAO,KAAU,EAAE;gBACjB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAClC;QACL,CAAC;KAAA;IAEY,KAAK,CACd,KAAa,EACb,QAAgB;;YAEhB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;aAC9C;YACD,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;gBACtC,OAAO,sBAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAClC;iBAAM;gBACH,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;aAC9C;QACL,CAAC;KAAA;CACJ;AAED,kBAAe,WAAW,CAAC"}
|
|
Loading…
Reference in new issue