diff --git a/src/core/api.js b/src/core/api.js index 31ed7dd5..3e4a2f8b 100644 --- a/src/core/api.js +++ b/src/core/api.js @@ -5,13 +5,15 @@ import { randomBytes } from "crypto"; const ipSalt = randomBytes(64).toString('hex'); import { env, version } from "../modules/config.js"; -import { getJSON } from "../modules/api.js"; +import match from "../modules/processing/match.js"; import { apiJSON, checkJSONPost, getIP, languageCode } from "../modules/sub/utils.js"; import { Bright, Cyan } from "../modules/sub/consoleText.js"; import stream from "../modules/stream/stream.js"; import loc from "../localization/manager.js"; import { generateHmac } from "../modules/sub/crypto.js"; import { verifyStream, getInternalStream } from "../modules/stream/manage.js"; +import { extract } from "../modules/processing/url.js"; +import { errorUnsupported } from "../modules/sub/errors.js"; export function runAPI(express, app, gitCommit, gitBranch, __dirname) { const corsConfig = !env.corsWildcard ? { @@ -105,8 +107,14 @@ export function runAPI(express, app, gitCommit, gitBranch, __dirname) { let chck = checkJSONPost(request); if (!chck) throw new Error(); + + const parsed = extract(chck.url); + if (parsed === null) { + return apiJSON(0, { t: errorUnsupported(lang) }) + } - j = await getJSON(chck.url, lang, chck); + j = await match(parsed.host, parsed.patternMatch, chck.url, lang, chck) + .catch(() => apiJSON(0, { t: loc(lang, 'ErrorSomethingWentWrong') })) } else { j = apiJSON(0, { t: !contentCon ? "invalid content type header" : loc(lang, 'ErrorNoLink') diff --git a/src/modules/api.js b/src/modules/api.js deleted file mode 100644 index 209bc14a..00000000 --- a/src/modules/api.js +++ /dev/null @@ -1,18 +0,0 @@ -import { apiJSON } from "./sub/utils.js"; -import { errorUnsupported } from "./sub/errors.js"; -import loc from "../localization/manager.js"; -import match from "./processing/match.js"; -import { extract } from "./processing/url.js"; - -export async function getJSON(url, lang, obj) { - try { - const parsed = extract(url); - if (parsed === null) { - return apiJSON(0, { t: errorUnsupported(lang) }); - } - - return await match(parsed.host, parsed.patternMatch, url, lang, obj) - } catch (e) { - return apiJSON(0, { t: loc(lang, 'ErrorSomethingWentWrong') }) - } -} diff --git a/src/test/test.js b/src/test/test.js index d8373ff7..b3bcff04 100644 --- a/src/test/test.js +++ b/src/test/test.js @@ -1,11 +1,14 @@ import "dotenv/config"; import "../modules/sub/alias-envs.js"; -import { getJSON } from "../modules/api.js"; import { services } from "../modules/config.js"; +import { extract } from "../modules/processing/url.js"; +import match from "../modules/processing/match.js"; import { loadJSON } from "../modules/sub/loadFromFs.js"; import { checkJSONPost } from "../modules/sub/utils.js"; +import { env } from "../modules/config.js"; +env.apiURL = 'http://localhost:9000' let tests = loadJSON('./src/test/tests.json'); let noTest = []; @@ -35,7 +38,12 @@ for (let i in services) { let chck = checkJSONPost(params); if (chck) { chck["ip"] = "d21ec524bc2ade41bef569c0361ac57728c69e2764b5cb3cb310fe36568ca53f"; // random sha256 - let j = await getJSON(chck["url"], "en", chck); + const parsed = extract(chck.url); + if (parsed === null) { + throw `Invalid URL: ${chck.url}` + } + + let j = await match(parsed.host, parsed.patternMatch, "en", chck); console.log('\nReceived:'); console.log(j) if (j.status === test.expected.code && j.body.status === test.expected.status) {