movie-web/src/providers/wrapper.ts
Jelle van Snik 32b36e047d Added stream scraping
Co-authored-by: James Hawkins <jhawki2005@gmail.com>
2022-02-20 15:49:55 +01:00

32 lines
933 B
TypeScript

import { MWMedia, MWMediaProvider, MWMediaStream, MWPortableMedia, MWQuery } from "./types";
export interface MWWrappedMediaProvider extends MWMediaProvider {
getMediaFromPortable(media: MWPortableMedia): Promise<MWMedia>;
searchForMedia(query: MWQuery): Promise<MWMedia[]>;
getStream(media: MWPortableMedia): Promise<MWMediaStream>;
}
export function WrapProvider(
provider: MWMediaProvider
): MWWrappedMediaProvider {
return {
...provider,
async getMediaFromPortable(media: MWPortableMedia): Promise<MWMedia> {
return {
...(await provider.getMediaFromPortable(media)),
providerId: provider.id,
mediaType: media.mediaType,
};
},
async searchForMedia(query: MWQuery): Promise<MWMedia[]> {
return (await provider.searchForMedia(query)).map<MWMedia>((m) => ({
...m,
providerId: provider.id,
mediaType: query.type,
}));
},
};
}