From df07dff1db95e4f6918a97ac0556825230629c8b Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Mon, 12 Feb 2024 23:07:14 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=B2=20Added=20Prowlarr=20search=20endp?= =?UTF-8?q?oint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/prowlarr.service.ts | 76 ++++++++++++++++++++++++++++++++---- 1 file changed, 69 insertions(+), 7 deletions(-) diff --git a/services/prowlarr.service.ts b/services/prowlarr.service.ts index 6a94148..f030b86 100644 --- a/services/prowlarr.service.ts +++ b/services/prowlarr.service.ts @@ -16,30 +16,92 @@ export default class ProwlarrService extends Service { actions: { connect: { rest: "POST /connect", - handler: async (ctx: Context<{}>) => { + handler: async ( + ctx: Context<{ + host: string; + port: string; + apiKey: string; + }>, + ) => { + const { host, port, apiKey } = ctx.params; const result = await axios.request({ - url: "http://192.168.1.183:9696/api", + url: `http://${host}:${port}/api`, method: "GET", headers: { - "X-Api-Key": "163ef9a683874f65b53c7be87354b38b", + "X-Api-Key": apiKey, }, }); console.log(result.data); }, }, - indexers: { + getIndexers: { rest: "GET /indexers", - handler: async (ctx: Context<{}>) => { + handler: async ( + ctx: Context<{ host: string; port: string; apiKey: string }>, + ) => { + const { host, port, apiKey } = ctx.params; const result = await axios.request({ - url: "http://192.168.1.183:9696/api/v1/indexer", + url: `http://${host}:${port}/api/v1/indexer`, method: "GET", headers: { - "X-Api-Key": "163ef9a683874f65b53c7be87354b38b", + "X-Api-Key": apiKey, }, }); return result.data; }, }, + search: { + rest: "GET /search", + handler: async ( + ctx: Context<{ + host: string; + port: string; + apiKey: string; + query: string; + type: string; + indexerIds: string; + categories: string; + limit: number; + offset: number; + }>, + ) => { + const { + indexerIds, + categories, + host, + port, + apiKey, + query, + type, + limit, + offset, + } = ctx.params; + + const indexers = indexerIds.split(",").map((index) => parseInt(index, 10)); + const searchCategories = categories + .split(",") + .map((category) => parseInt(category, 10)); + + const result = await axios({ + url: `http://${host}:${port}/api/v1/search`, + method: "GET", + params: { + query, + type, + indexers, + searchCategories, + limit, + offset, + }, + headers: { + Accept: "application/json", + "X-Api-Key": `${apiKey}`, + }, + }); + console.log(result); + return result.data; + }, + }, ping: { rest: "GET /ping", handler: async (ctx: Context<{}>) => {