diff --git a/services/request/src/server/Application.ts b/services/request/src/server/Application.ts index 1082da0..2a9f4fd 100644 --- a/services/request/src/server/Application.ts +++ b/services/request/src/server/Application.ts @@ -1,5 +1,3 @@ -import { randomBytes } from "crypto"; -import { promisify } from "util"; import DiscordBot from "./services/DiscordBot"; import Service from "./services/Service"; import TorrentClientIpc from "./services/TorrentClientIpc"; @@ -7,17 +5,6 @@ import WebServer from "./services/WebServer"; import { User, RegisterToken } from "./database/entities"; import Database from "./services/Database"; -/** - * @TODO Not sure where to put this yet... here's fine for now - */ -async function createRegisterToken() { - let randomBytesPromise = promisify(randomBytes); - let token = new RegisterToken(); - token.token = (await randomBytesPromise(48)).toString("hex"); - await token.save(); - return token; -} - let instance: Application; /** @@ -94,7 +81,7 @@ export default class Application console.log("Found 0 users"); let token = await RegisterToken.findOne(); if (token === undefined) { - token = await createRegisterToken(); + token = await RegisterToken.generate(); } console.log("First time register with: ", token.token); } diff --git a/services/request/src/server/database/entities/RegisterToken.ts b/services/request/src/server/database/entities/RegisterToken.ts index 3752d8f..3fe2c55 100644 --- a/services/request/src/server/database/entities/RegisterToken.ts +++ b/services/request/src/server/database/entities/RegisterToken.ts @@ -1,4 +1,5 @@ -import { Entity, PrimaryGeneratedColumn, Column, BaseEntity, ManyToOne } from "typeorm"; +import { randomBytes } from "crypto"; +import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm"; @Entity() export class RegisterToken extends BaseEntity @@ -9,10 +10,30 @@ export class RegisterToken extends BaseEntity @Column() token!: string + /** + * Check if the provided token is valid + */ public static async isValid(token: string) { if (typeof token !== "string") { return false; } return Boolean(token) && await RegisterToken.count({token}) > 0; } + + /** + * Create a new registration token and insert it into the database + */ + public static generate() { + return new Promise((resolve, reject) => { + randomBytes(48, async (err, result) => { + if (err) { + reject(err); + } else { + let token = new RegisterToken(); + token.token = result.toString("hex"); + resolve(await token.save()); + } + }); + }); + } } diff --git a/services/request/src/server/services/MovieSearch.ts b/services/request/src/server/services/MovieSearch.ts new file mode 100644 index 0000000..07a6aaa --- /dev/null +++ b/services/request/src/server/services/MovieSearch.ts @@ -0,0 +1,18 @@ +import Application from "@server/Application"; +import TVDB from "tvdb-v4"; +import Service from "./Service"; + +export default class MovieSearch extends Service +{ + public constructor(app: Application) { + super("Movie Search", app); + } + + public async boot() { + + } + + public async shutdown() { + + } +} diff --git a/services/request/src/server/services/TvDb.ts b/services/request/src/server/services/TvDb.ts new file mode 100644 index 0000000..e69de29