🧲 Implemented a login method

This commit is contained in:
2024-03-17 15:04:50 -04:00
parent f476e847ce
commit 20fe2327b4

View File

@@ -14,6 +14,14 @@ export default class QBittorrentService extends Service {
hooks: {},
settings: {},
actions: {
fetchQbittorrentCredentials: {
rest: "GET /fetchQbittorrentCredentials",
handler: async (ctx: Context<{}>) => {
return await this.broker.call("settings.getSettings", {
settingsKey: "bittorrent",
});
},
},
connect: {
rest: "POST /connect",
handler: async (
@@ -23,7 +31,7 @@ export default class QBittorrentService extends Service {
hostname: string;
port: string;
protocol: string;
name: string;
name?: string;
}>,
) => {
const { username, password, hostname, port, protocol } = ctx.params;
@@ -39,10 +47,43 @@ export default class QBittorrentService extends Service {
}
},
},
loginWithStoredCredentials: {
rest: "POST /loginWithStoredCredentials",
handler: async (ctx: Context<{}>) => {
try {
const result: any = await this.broker.call(
"qbittorrent.fetchQbittorrentCredentials",
{},
);
if (result !== undefined) {
const {
client: {
host: { username, password, hostname, port, protocol },
},
} = result;
return await this.broker.call("qbittorrent.connect", {
username,
password,
hostname,
port,
protocol,
});
}
} catch (err) {
return {
error: err,
message:
"Qbittorrent credentials not found, please configure them in Settings.",
};
}
},
},
getClientInfo: {
rest: "GET /getClientInfo",
handler: async (ctx: Context<{}>) => {
console.log(this.meta.app);
await this.broker.call("qbittorrent.loginWithStoredCredentials", {});
return {
buildInfo: await this.meta.app.buildInfo(),
version: await this.meta.app.version(),
@@ -59,6 +100,7 @@ export default class QBittorrentService extends Service {
}>,
) => {
try {
await this.broker.call("qbittorrent.loginWithStoredCredentials", {});
const { torrentToDownload, comicObjectId } = ctx.params;
console.log(torrentToDownload);
const response = await fetch(torrentToDownload, {
@@ -95,11 +137,15 @@ export default class QBittorrentService extends Service {
},
getTorrents: {
rest: "POST /getTorrents",
handler: async (ctx: Context<{}>) => await this.meta.torrents.info(),
handler: async (ctx: Context<{}>) => {
await this.broker.call("qbittorrent.loginWithStoredCredentials", {});
return await this.meta.torrents.info();
},
},
getTorrentDetails: {
rest: "POST /getTorrentDetails",
handler: async (ctx: Context<{ infoHashes: [string] }>) => {
await this.broker.call("qbittorrent.loginWithStoredCredentials", {});
const infoHashes = Object.values(ctx.params);
const torrentDetails = infoHashes.map(async (infoHash) => {
return await this.meta.torrents.properties(infoHash);
@@ -110,13 +156,7 @@ export default class QBittorrentService extends Service {
checkForDeletedTorrents: {
rest: "GET /checkForDeletedTorrents",
handler: async (ctx: Context<{ infoHashes: [string] }>) => {
await this.broker.call("qbittorrent.connect", {
hostname: "localhost",
protocol: "http",
port: "8080",
username: "admin",
password: "password",
});
await this.broker.call("qbittorrent.loginWithStoredCredentials", {});
const torrents: any = await this.broker.call("qbittorrent.getTorrents", {});
const deletedTorrents = this.detectDeletedTorrents(
torrents.map((torrent: any) => torrent.hash),