-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase.js
More file actions
127 lines (110 loc) · 2.87 KB
/
database.js
File metadata and controls
127 lines (110 loc) · 2.87 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
125
126
127
const { MongoClient, ServerApiVersion } = require("mongodb");
const dotenv = require("dotenv");
dotenv.config();
const uri = `mongodb+srv://admin:${process.env.MONGODB_PASSWORD}@carladown.d3xwq.mongodb.net/?retryWrites=true&w=majority&appName=CarlaDown`;
const client = new MongoClient(uri, {
serverApi: {
version: ServerApiVersion.v1,
strict: true,
deprecationErrors: true,
},
});
const createURL = async (videoID, isMP3) => {
try {
console.log("Creating URL for videoID: " + videoID);
client.connect();
const myDB = await client.db(
`carladown_${
process.env.IS_PRODUCTION.toString() == "true" ? "prod" : "dev"
}`
);
const myColl = await myDB.collection(`${isMP3 ? "mp3" : "mp4"}`);
const alreadyHaveThisVideo = await myColl.findOne({
videoID,
});
await client.close();
if (alreadyHaveThisVideo) {
if (alreadyHaveThisVideo.shortLink) {
return {
error: null,
shortLink: alreadyHaveThisVideo.shortLink,
};
} else {
await myColl.deleteOne({
videoID,
});
return {
error: {
message:
"Thers is a video with the same ID, but without a short link. Retry.",
},
shortLink: null,
};
}
}
const downloadID = `${Date.now()}_${Math.random()}`;
const link = `http://${process.env.SERVER_DOMAIN}/api/download_${
isMP3 ? "mp3" : "mp4"
}?id=${downloadID}`;
if (link.match(new RegExp("^https?://")) != null) return;
const base_url =
"https://link-to.net/" +
process.env.LINKADVERTISE_ID +
"/" +
Math.random() * 1000 +
"/dynamic/";
const base64 = Buffer.from(encodeURI(link)).toString("base64");
client.close();
console.log(`link: ${base_url}?r=${base64}`);
return {
error: "sem erro",
shortLink: `link encurtado: ${base_url}?r=${base64}`,
};
} catch (e) {
console.error(e);
}
// myColl.insertOne({
// downloadID,
// videoID,
// shortLink: href,
// });
return "oi";
};
const getURL = async (downloadID, isMP3) => {
await client.connect();
const myDB = await client.db(
`carladown_${
process.env.IS_PRODUCTION.toString() == "true" ? "prod" : "dev"
}`
);
const myColl = await myDB.collection(`${isMP3 ? "mp3" : "mp4"}`);
const query = await myColl.findOne({
downloadID,
});
if (query !== null) {
return {
error: null,
videoID: `${query.videoID}`,
};
} else {
return {
error: {
message:
"No video has found. The download ID (" +
downloadID +
") is correct?",
},
videoID: null,
};
}
};
var markup = function (href) {
var c = href;
if (c.substring(c.length - 1) == "/") c = c.substring(0, c.length - 1);
return c;
};
module.exports = {
createURL,
getURL,
markup,
};