import { IpcClientService } from "@autoplex/ipc";
import { Microservice } from "@autoplex/microservice";
import { SOCKET_PATH } from "./constants";

export class IpcClient<M extends Microservice = Microservice> extends IpcClientService<M>
{
    /**
     * The name of the service
     */
    public readonly NAME = "Plex";

    /**
     * The path to the socket file
     */
    protected readonly SOCKET_PATH = SOCKET_PATH;

    /**
     * Fetch a Plex movie link given the TMDb ID if it exists
     */
    public async movieLinks(tmdbIds: (number|string)[]) {
        let results = await this.request("movie_links", tmdbIds);
        if (results.error) {
            throw new Error("Failed to fetch Plex movie link");
        }
        return <{ [tmdbId: string]: string|null }>results.data;
    }
}
