import BaseApi from "./base"; class MovieApi extends BaseApi { constructor() { super("/movies"); } async blacklist(): Promise { return new Promise((resolve, reject) => { this.get>("/blacklist") .then((res) => { resolve(res.data.data); }) .catch(reject); }); } async addBlacklist( radarrid: number, form: FormType.AddBlacklist ): Promise { return new Promise((resolve, reject) => { this.post("/blacklist", form, { radarrid }) .then(() => resolve()) .catch(reject); }); } async deleteBlacklist( all?: boolean, form?: FormType.DeleteBlacklist ): Promise { return new Promise((resolve, reject) => { this.delete("/blacklist", form, { all }) .then(() => resolve()) .catch(reject); }); } async movies(radarrid?: number[]) { return new Promise>((resolve, reject) => { this.get>("", { radarrid }) .then((result) => { resolve(result.data); }) .catch((reason) => { reject(reason); }); }); } async moviesBy(params: Parameter.Range) { return new Promise>((resolve, reject) => { this.get>("", params) .then((result) => { resolve(result.data); }) .catch((reason) => { reject(reason); }); }); } async modify(form: FormType.ModifyItem) { return new Promise((resolve, reject) => { this.post("", { radarrid: form.id, profileid: form.profileid }) .then(() => resolve()) .catch((err) => reject(err)); }); } async wanted(params: Parameter.Range) { return new Promise>((resolve, reject) => { this.get>("/wanted", params) .then((result) => { resolve(result.data); }) .catch((reason) => { reject(reason); }); }); } async wantedBy(radarrid: number[]) { return new Promise>((resolve, reject) => { this.get>("/wanted", { radarrid }) .then((result) => { resolve(result.data); }) .catch((reason) => { reject(reason); }); }); } async history(id?: number): Promise { return new Promise((resolve, reject) => { this.get>("/history", { radarrid: id, }) .then((result) => { resolve(result.data.data); }) .catch((reason) => { reject(reason); }); }); } async action(action: FormType.MoviesAction) { return new Promise((resolve, reject) => { this.patch("", action) .then(() => resolve()) .catch(reject); }); } async downloadSubtitles(id: number, form: FormType.Subtitle): Promise { return new Promise((resolve, reject) => { this.patch("/subtitles", form, { radarrid: id }) .then(() => resolve()) .catch(reject); }); } async uploadSubtitles( id: number, form: FormType.UploadSubtitle ): Promise { return new Promise((resolve, reject) => { this.post("/subtitles", form, { radarrid: id }) .then(() => resolve()) .catch(reject); }); } async deleteSubtitles( id: number, form: FormType.DeleteSubtitle ): Promise { return new Promise((resolve, reject) => { this.delete("/subtitles", form, { radarrid: id }) .then(() => resolve()) .catch(reject); }); } } export default new MovieApi();