Skip to content

Commit dfcae92

Browse files
committed
Port over legacy generators from PHP/old RandomAPI Beta to new RandomAPI beta
1 parent c69a6e0 commit dfcae92

1 file changed

Lines changed: 98 additions & 2 deletions

File tree

routes/api.js

Lines changed: 98 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
var fs = require('fs');
2+
var qs = require('qs');
23
var express = require('express');
34
var router = express.Router();
45
var Request = require('../models/Request');
6+
var legRequest = require('request');
57

68
var latestVersion = '1.1';
79

@@ -13,7 +15,52 @@ router.get('/:version', (req, res, next) => {
1315
genUser(req, res, req.params.version);
1416
});
1517

18+
let legacy = {
19+
"0.1": {
20+
hash: "916ad3d01e4040cc0a67e0367f887f19",
21+
max: 5
22+
},
23+
"0.2": {
24+
hash: "74af1a1572d1065ba63f11afb6ba34ee",
25+
max: 5
26+
},
27+
"0.2.1": {
28+
hash: "d462956eec6157ab03164c565682f3d6",
29+
max: 5
30+
},
31+
"0.3": {
32+
hash: "cc4b5abca158d7fe0bbb92dcd591114c",
33+
max: 10
34+
},
35+
"0.3.1": {
36+
hash: "52432a28e766d8142b811436742ec905",
37+
max: 10
38+
},
39+
"0.3.2": {
40+
hash: "7c25fc35021cdab8bcc0bc20d352a064",
41+
max: 10
42+
},
43+
"0.4": {
44+
hash: "884bcc24441f39bddfe17e12a080ab7f",
45+
max: 20
46+
},
47+
"0.4.1": {
48+
hash: "127ee4298ee834d84b33b4ff6f544ed0",
49+
max: 100
50+
},
51+
"0.5": {
52+
hash: "4111cf8ceae827c5c7659e2ed6238a18",
53+
max: 100
54+
},
55+
"0.6": {
56+
hash: "418b98dfb9a79a966bf4bb951665856f",
57+
max: 100
58+
}
59+
};
60+
1661
function genUser(req, res, version) {
62+
req.query.fmt = req.query.format;
63+
1764
var ip = req.headers['cf-connecting-ip'] || req.headers['x-real-ip'] || req.headers['x-forwarded-for'] || req.connection.remoteAddress;
1865

1966
if (clients[ip] >= settings.limit) {
@@ -25,6 +72,55 @@ function genUser(req, res, version) {
2572

2673
version = version || latestVersion;
2774

75+
// Legacy versions
76+
if (version in legacy) {
77+
req.query.results = req.query.results || 1;
78+
79+
var results = req.query.results;
80+
if (results > legacy[version].max || results < 1 || isNaN(results) || results % 1 !== 0) {
81+
results = 1;
82+
req.query.results = 1;
83+
}
84+
85+
if (!(ip in clients)) {
86+
clients[ip] = Number(req.query.results);
87+
} else {
88+
clients[ip] += Number(req.query.results);
89+
}
90+
91+
return legRequest(`https://beta.randomapi.com/api/${legacy[version].hash}?noinfo&${qs.stringify(req.query)}`, (err, ret) => {
92+
if (req.query.fmt === 'json') {
93+
res.setHeader('Content-Type', 'application/json');
94+
} else if (req.query.fmt === 'xml') {
95+
res.setHeader('Content-Type', 'text/xml');
96+
} else if (req.query.fmt === 'yaml') {
97+
res.setHeader('Content-Type', 'text/x-yaml');
98+
} else if (req.query.fmt === 'csv') {
99+
res.setHeader('Content-Type', 'text/csv');
100+
} else {
101+
res.setHeader('Content-Type', 'text/plain');
102+
}
103+
104+
res.setHeader('Cache-Control', 'no-cache');
105+
106+
var payload = {
107+
'bandwidth': ret.body.length,
108+
'total': req.query.results
109+
};
110+
payload[version.replace(/\./g, '_')] = req.query.results;
111+
112+
Request.findOrCreate({date: getDateTime()}, payload, (err, obj, created) => {
113+
// Update record
114+
if (!created) {
115+
Request.update({date: getDateTime()}, {$inc: payload}, (err) => {
116+
117+
});
118+
}
119+
res.send(ret.body)
120+
});
121+
});
122+
}
123+
28124
// Version doesn't exist
29125
if (typeof Generator[version] === 'undefined') {
30126
res.sendStatus(404);
@@ -80,7 +176,7 @@ function genUser(req, res, version) {
80176
'bandwidth': output.length,
81177
'total': results
82178
};
83-
payload[version.replace('.', '_')] = results;
179+
payload[version.replace(/\./g, '_')] = results;
84180

85181
Request.findOrCreate({date: getDateTime()}, payload, (err, obj, created) => {
86182
// Update record
@@ -96,7 +192,7 @@ function genUser(req, res, version) {
96192
fs.unlink(name);
97193
});
98194
} else {
99-
// Hacky PS extension formatting
195+
// Hacky PS extension formatting
100196
if (req.query.extension === "true") {
101197
output = JSON.parse(output);
102198
var extObj = {

0 commit comments

Comments
 (0)