Files
threetwo-acquisition-service/services/prowlarr.service.ts

119 lines
2.5 KiB
TypeScript

"use strict";
import { Context, Service, ServiceBroker, ServiceSchema, Errors } from "moleculer";
import axios from "axios";
export default class ProwlarrService extends Service {
// @ts-ignore
public constructor(
public broker: ServiceBroker,
schema: ServiceSchema<{}> = { name: "prowlarr" },
) {
super(broker);
this.parseServiceSchema({
name: "prowlarr",
mixins: [],
hooks: {},
actions: {
connect: {
rest: "POST /connect",
handler: async (
ctx: Context<{
host: string;
port: string;
apiKey: string;
}>,
) => {
const { host, port, apiKey } = ctx.params;
const result = await axios.request({
url: `http://${host}:${port}/api`,
method: "GET",
headers: {
"X-Api-Key": apiKey,
},
});
console.log(result.data);
},
},
getIndexers: {
rest: "GET /indexers",
handler: async (
ctx: Context<{ host: string; port: string; apiKey: string }>,
) => {
const { host, port, apiKey } = ctx.params;
const result = await axios.request({
url: `http://${host}:${port}/api/v1/indexer`,
method: "GET",
headers: {
"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: [number];
categories: [number];
limit: number;
offset: number;
}>,
) => {
const {
indexerIds,
categories,
host,
port,
apiKey,
query,
type,
limit,
offset,
} = ctx.params;
const result = await axios({
url: `http://${host}:${port}/api/v1/search`,
method: "GET",
params: {
query,
type,
indexerIds,
categories,
limit,
offset,
},
headers: {
Accept: "application/json",
"X-Api-Key": `${apiKey}`,
},
});
return result.data;
},
},
ping: {
rest: "GET /ping",
handler: async (ctx: Context<{}>) => {
const foo = await axios.request({
url: "http://192.168.1.183:9696/ping",
method: "GET",
headers: {
Accept: "application/json",
"X-Api-Key": "163ef9a683874f65b53c7be87354b38b",
},
});
console.log(foo.data);
return true;
},
},
},
methods: {},
});
}
}