append to response tvSeason support

This commit is contained in:
DerPenz
2023-05-15 13:30:52 +02:00
parent dbb93f5104
commit 0020057097
3 changed files with 33 additions and 7 deletions

View File

@@ -5,11 +5,13 @@ import {
ExternalIds, ExternalIds,
Images, Images,
LanguageOption, LanguageOption,
SeasonChangeValue, TvSeasonChangeValue,
SeasonDetails, SeasonDetails,
SeasonSelection, SeasonSelection,
Translations, Translations,
Videos, Videos,
AppendToResponseTvSeasonKey,
AppendToResponse,
} from '..'; } from '..';
import { BaseEndpoint } from './base'; import { BaseEndpoint } from './base';
@@ -22,10 +24,21 @@ export class TvSeasonsEndpoint extends BaseEndpoint {
super(accessToken); super(accessToken);
} }
async details(seasonSelection: SeasonSelection, options: LanguageOption) { async details<T extends AppendToResponseTvSeasonKey[] | undefined>(
return await this.api.get<SeasonDetails>( seasonSelection: SeasonSelection,
appendToResponse?: T,
options?: LanguageOption
) {
const combinedOptions = {
append_to_response: appendToResponse
? appendToResponse.join(',')
: undefined,
...options,
};
return await this.api.get<AppendToResponse<SeasonDetails, T, 'tvSeason'>>(
`${BASE_SEASON(seasonSelection)}`, `${BASE_SEASON(seasonSelection)}`,
options combinedOptions
); );
} }
@@ -40,7 +53,7 @@ export class TvSeasonsEndpoint extends BaseEndpoint {
} }
async changes(seasonId: number, options?: ChangeOption) { async changes(seasonId: number, options?: ChangeOption) {
return await this.api.get<Changes<SeasonChangeValue>>( return await this.api.get<Changes<TvSeasonChangeValue>>(
`/tv/season/${seasonId}/changes`, `/tv/season/${seasonId}/changes`,
options options
); );

View File

@@ -29,6 +29,7 @@ import {
TvEpisodeChangeValue, TvEpisodeChangeValue,
TvEpisodeCredit, TvEpisodeCredit,
TvEpisodeTranslations, TvEpisodeTranslations,
TvSeasonChangeValue,
} from '.'; } from '.';
export interface LanguageOption { export interface LanguageOption {
@@ -99,16 +100,26 @@ export type AppendToResponseTvEpisodeKey =
| 'videos' | 'videos'
| 'translations'; | 'translations';
export type AppendToResponseTvSeasonKey =
| 'images'
| 'credits'
| 'external_ids'
| 'videos'
| 'aggregate_credits'
| 'translations';
type AppendToResponseAllKeys = type AppendToResponseAllKeys =
| AppendToResponseTvKey | AppendToResponseTvKey
| AppendToResponseMovieKey | AppendToResponseMovieKey
| AppendToResponseTvEpisodeKey | AppendToResponseTvEpisodeKey
| AppendToResponseTvSeasonKey
| AppendToResponsePersonKey; | AppendToResponsePersonKey;
export type AppendToResponseMediaType = export type AppendToResponseMediaType =
| 'movie' | 'movie'
| 'tvShow' | 'tvShow'
| 'person' | 'person'
| 'tvSeason'
| 'tvEpisode'; | 'tvEpisode';
export type AppendToResponse< export type AppendToResponse<
@@ -153,7 +164,9 @@ export type AppendToResponse<
? MovieChangeValue ? MovieChangeValue
: Media extends 'tvShow' : Media extends 'tvShow'
? TvShowChangeValue ? TvShowChangeValue
: TvEpisodeChangeValue : Media extends 'tvSeason'
? TvSeasonChangeValue :
TvEpisodeChangeValue
>; >;
} }
: object) & : object) &

View File

@@ -15,7 +15,7 @@ export interface SeasonDetails {
season_number: number; season_number: number;
} }
export type SeasonChangeValue = export type TvSeasonChangeValue =
| string | string
| { | {
episode_id: number; episode_id: number;