mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2025-12-27 09:23:52 -05:00
Tsify lib/shorteners (#4504)
* Convert lib/shorteners to ts * Improved types
This commit is contained in:
@@ -22,11 +22,17 @@
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
export class BaseShortener {
|
||||
constructor(storageHandler) {
|
||||
this.storageHandler = storageHandler;
|
||||
}
|
||||
import * as express from 'express';
|
||||
|
||||
import {StorageBase} from '../storage';
|
||||
|
||||
export abstract class BaseShortener {
|
||||
constructor(protected storageHandler: StorageBase) {}
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
handle(req, res) {}
|
||||
abstract handle(req: express.Request, res: express.Response);
|
||||
|
||||
static get key(): string {
|
||||
throw 'get key() must be overridden';
|
||||
}
|
||||
}
|
||||
@@ -22,14 +22,16 @@
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import * as express from 'express';
|
||||
|
||||
import {BaseShortener} from './base';
|
||||
|
||||
export class DefaultShortener extends BaseShortener {
|
||||
static get key() {
|
||||
return 'default';
|
||||
}
|
||||
|
||||
handle(req, res) {
|
||||
override handle(req: express.Request, res: express.Response) {
|
||||
return this.storageHandler.handler(req, res);
|
||||
}
|
||||
|
||||
static override get key() {
|
||||
return 'default';
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,7 @@
|
||||
import request from 'request';
|
||||
|
||||
export class ShortLinkResolver {
|
||||
resolve(url) {
|
||||
resolve(url: string) {
|
||||
return new Promise((resolve, reject) => {
|
||||
request({method: 'HEAD', uri: url, followRedirect: false}, (err, res) => {
|
||||
if (err !== null) {
|
||||
@@ -22,28 +22,29 @@
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import * as express from 'express';
|
||||
import request from 'request';
|
||||
|
||||
import {BaseShortener} from './base';
|
||||
|
||||
export class TinyUrlShortener extends BaseShortener {
|
||||
static get key() {
|
||||
return 'tinyurl';
|
||||
}
|
||||
|
||||
handle(req, res) {
|
||||
override handle(req: express.Request, res: express.Response) {
|
||||
const url = `${req.protocol}://${req.get('host')}#${req.body.config}`;
|
||||
const options = {
|
||||
url: 'https://tinyurl.com/api-create.php?url=' + encodeURIComponent(url),
|
||||
method: 'GET',
|
||||
};
|
||||
const callback = (err, resp, body) => {
|
||||
const callback = (err, resp: request.Response, body) => {
|
||||
if (!err && resp.statusCode === 200) {
|
||||
res.send({url: body});
|
||||
} else {
|
||||
res.status(resp.statusCode).send(resp.error);
|
||||
res.status(resp.statusCode).send('Tinyurl error');
|
||||
}
|
||||
};
|
||||
request.post(options, callback);
|
||||
}
|
||||
|
||||
static override get key() {
|
||||
return 'tinyurl';
|
||||
}
|
||||
}
|
||||
68
package-lock.json
generated
68
package-lock.json
generated
@@ -14,6 +14,7 @@
|
||||
"@sentry/browser": "^6.16.1",
|
||||
"@sentry/node": "^6.16.1",
|
||||
"@types/file-saver": "^2.0.5",
|
||||
"@types/request": "^2.48.8",
|
||||
"aws-sdk": "^2.1048.0",
|
||||
"big-integer": "^1.6.51",
|
||||
"body-parser": "^1.19.1",
|
||||
@@ -1709,6 +1710,11 @@
|
||||
"@popperjs/core": "^2.9.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/caseless": {
|
||||
"version": "0.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz",
|
||||
"integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w=="
|
||||
},
|
||||
"node_modules/@types/chai": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz",
|
||||
@@ -1863,6 +1869,30 @@
|
||||
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/request": {
|
||||
"version": "2.48.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz",
|
||||
"integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==",
|
||||
"dependencies": {
|
||||
"@types/caseless": "*",
|
||||
"@types/node": "*",
|
||||
"@types/tough-cookie": "*",
|
||||
"form-data": "^2.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/request/node_modules/form-data": {
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
|
||||
"integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
|
||||
"dependencies": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.6",
|
||||
"mime-types": "^2.1.12"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.12"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/retry": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
|
||||
@@ -1950,6 +1980,11 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/tough-cookie": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz",
|
||||
"integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw=="
|
||||
},
|
||||
"node_modules/@types/underscore": {
|
||||
"version": "1.11.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz",
|
||||
@@ -16449,6 +16484,11 @@
|
||||
"@popperjs/core": "^2.9.2"
|
||||
}
|
||||
},
|
||||
"@types/caseless": {
|
||||
"version": "0.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz",
|
||||
"integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w=="
|
||||
},
|
||||
"@types/chai": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz",
|
||||
@@ -16603,6 +16643,29 @@
|
||||
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/request": {
|
||||
"version": "2.48.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz",
|
||||
"integrity": "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==",
|
||||
"requires": {
|
||||
"@types/caseless": "*",
|
||||
"@types/node": "*",
|
||||
"@types/tough-cookie": "*",
|
||||
"form-data": "^2.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"form-data": {
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
|
||||
"integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
|
||||
"requires": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.6",
|
||||
"mime-types": "^2.1.12"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@types/retry": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
|
||||
@@ -16690,6 +16753,11 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/tough-cookie": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz",
|
||||
"integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw=="
|
||||
},
|
||||
"@types/underscore": {
|
||||
"version": "1.11.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz",
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
"@sentry/browser": "^6.16.1",
|
||||
"@sentry/node": "^6.16.1",
|
||||
"@types/file-saver": "^2.0.5",
|
||||
"@types/request": "^2.48.8",
|
||||
"aws-sdk": "^2.1048.0",
|
||||
"big-integer": "^1.6.51",
|
||||
"body-parser": "^1.19.1",
|
||||
|
||||
Reference in New Issue
Block a user