feat: Add openWebTorrent service for fetching seeders and peers

This commit is contained in:
ChristoferMendes 2024-05-10 12:12:45 -03:00
parent 09bd7dcc36
commit b84df28f39

View file

@ -0,0 +1,50 @@
import axios, { AxiosResponse } from "axios";
import { Agent } from "https";
type OpenWebTorrentResponse =
| {
seeds: number;
peers: number;
}
| {
error: {
code: number;
message: string;
};
};
const httpsAgent = new Agent({
rejectUnauthorized: false,
});
const axiosRef = axios.create({
baseURL: "https://checker.openwebtorrent.com",
httpsAgent
});
export const openWebTorrent = {
transformResponseError(response: AxiosResponse<OpenWebTorrentResponse>) {
if ("error" in response.data) {
throw new Error(response.data.error.message);
}
return response.data;
},
async getSeedersAndPeers(magnet: string) {
const endpoint = "/check";
const params = new URLSearchParams();
params.append("magnet", magnet);
try {
const response = await axiosRef.get(endpoint, { params });
const { seeds, peers } = this.transformResponseError(response);
return {
seeders: seeds,
peers: peers,
};
} catch (e) {
const error = e as Error;
throw new Error(error.message);
}
},
};