Do not use undefined params

This commit is contained in:
Tobias Karlsson
2023-03-29 21:29:56 +02:00
parent 1b51f8916d
commit f44f1081ca
7 changed files with 65 additions and 63 deletions

View File

@@ -1,6 +1,5 @@
import { DetailedCollection, ImageCollection, LanguageOption, Translations } from '../types'; import { DetailedCollection, ImageCollection, LanguageOption, Translations } from '../types';
import { BaseEndpoint } from './base'; import { BaseEndpoint } from './base';
import querystring from 'querystring';
const BASE_COLLECTION = '/collection'; const BASE_COLLECTION = '/collection';
@@ -10,18 +9,23 @@ export class CollectionsEndpoint extends BaseEndpoint {
} }
async details(id: number, options? : LanguageOption): Promise<DetailedCollection> { async details(id: number, options? : LanguageOption): Promise<DetailedCollection> {
const params = querystring.encode(options); const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';
return await this.api.get<DetailedCollection>(`${BASE_COLLECTION}/${id}?${params}`); return await this.api.get<DetailedCollection>(`${BASE_COLLECTION}/${id}?${params}`);
} }
async images(id: number, options? : LanguageOption): Promise<ImageCollection> { async images(id: number, options? : LanguageOption): Promise<ImageCollection> {
const params = querystring.encode(options); const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';
return await this.api.get<ImageCollection>(`${BASE_COLLECTION}/${id}/images?${params}`); return await this.api.get<ImageCollection>(`${BASE_COLLECTION}/${id}/images?${params}`);
} }
async translations(id: number, options? : LanguageOption): Promise<Translations> { async translations(id: number, options? : LanguageOption): Promise<Translations> {
const params = querystring.encode(options); const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';
return await this.api.get<Translations>(`${BASE_COLLECTION}/${id}/translations?${params}`); return await this.api.get<Translations>(`${BASE_COLLECTION}/${id}/translations?${params}`);
} }
} }

View File

@@ -1,5 +1,4 @@
import { BaseEndpoint } from './base'; import { BaseEndpoint } from './base';
import querystring from 'querystring';
import { BelongingMovies, Keyword, KeywordsOptions } from '../types'; import { BelongingMovies, Keyword, KeywordsOptions } from '../types';
const BASE_Keyword = '/keyword'; const BASE_Keyword = '/keyword';
@@ -14,7 +13,9 @@ export class KeywordsEndpoint extends BaseEndpoint {
} }
async belongingMovies(keywordId : number, options?: KeywordsOptions): Promise<BelongingMovies> { async belongingMovies(keywordId : number, options?: KeywordsOptions): Promise<BelongingMovies> {
const params = querystring.encode(options); const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';
return await this.api.get<BelongingMovies>(`${BASE_Keyword}/${keywordId}/movies?${params}`); return await this.api.get<BelongingMovies>(`${BASE_Keyword}/${keywordId}/movies?${params}`);
} }
} }

View File

@@ -40,8 +40,8 @@ export class MoviesEndpoint extends BaseEndpoint{
} }
async changes(id: number, options?: ChangeOptions): Promise<MovieChanges>{ async changes(id: number, options?: ChangeOptions): Promise<MovieChanges>{
const params = options const params = options
? new URLSearchParams(Object.entries(options)).toString() ? new URLSearchParams(Object.entries(options)).toString()
: ''; : '';
return await this.api.get<MovieChanges>(`${BASE_MOVIE}/${id}/changes?${params}`); return await this.api.get<MovieChanges>(`${BASE_MOVIE}/${id}/changes?${params}`);
} }
@@ -63,15 +63,15 @@ export class MoviesEndpoint extends BaseEndpoint{
} }
async lists(id: number, options?: PageOptions): Promise<MovieLists>{ async lists(id: number, options?: PageOptions): Promise<MovieLists>{
const params = options const params = options
? new URLSearchParams(Object.entries(options)).toString() ? new URLSearchParams(Object.entries(options)).toString()
: ''; : '';
return await this.api.get<MovieLists>(`${BASE_MOVIE}/${id}/lists?${params}`); return await this.api.get<MovieLists>(`${BASE_MOVIE}/${id}/lists?${params}`);
} }
async recommendations(id: number, options?: PageOptions): Promise<Recommendations>{ async recommendations(id: number, options?: PageOptions): Promise<Recommendations>{
const params = options const params = options
? new URLSearchParams(Object.entries(options)).toString() ? new URLSearchParams(Object.entries(options)).toString()
: ''; : '';
return await this.api.get<Recommendations>(`${BASE_MOVIE}/${id}/recommendations?${params}`); return await this.api.get<Recommendations>(`${BASE_MOVIE}/${id}/recommendations?${params}`);
} }
@@ -81,15 +81,15 @@ export class MoviesEndpoint extends BaseEndpoint{
} }
async reviews(id: number, options?: PageOptions): Promise<Reviews>{ async reviews(id: number, options?: PageOptions): Promise<Reviews>{
const params = options const params = options
? new URLSearchParams(Object.entries(options)).toString() ? new URLSearchParams(Object.entries(options)).toString()
: ''; : '';
return await this.api.get<Reviews>(`${BASE_MOVIE}/${id}/reviews?${params}`); return await this.api.get<Reviews>(`${BASE_MOVIE}/${id}/reviews?${params}`);
} }
async similar(id: number, options?: PageOptions): Promise<SimilarMovies>{ async similar(id: number, options?: PageOptions): Promise<SimilarMovies>{
const params = options const params = options
? new URLSearchParams(Object.entries(options)).toString() ? new URLSearchParams(Object.entries(options)).toString()
: ''; : '';
return await this.api.get<SimilarMovies>(`${BASE_MOVIE}/${id}/similar?${params}`); return await this.api.get<SimilarMovies>(`${BASE_MOVIE}/${id}/similar?${params}`);
} }
@@ -115,29 +115,29 @@ export class MoviesEndpoint extends BaseEndpoint{
} }
async nowPlaying(options?: LocaleOptions): Promise<MoviesPlayingNow>{ async nowPlaying(options?: LocaleOptions): Promise<MoviesPlayingNow>{
const params = options const params = options
? new URLSearchParams(Object.entries(options)).toString() ? new URLSearchParams(Object.entries(options)).toString()
: ''; : '';
return await this.api.get<MoviesPlayingNow>(`${BASE_MOVIE}/now_playing?${params}`); return await this.api.get<MoviesPlayingNow>(`${BASE_MOVIE}/now_playing?${params}`);
} }
async popular(options?: PageOptions): Promise<PopularMovies>{ async popular(options?: PageOptions): Promise<PopularMovies>{
const params = options const params = options
? new URLSearchParams(Object.entries(options)).toString() ? new URLSearchParams(Object.entries(options)).toString()
: ''; : '';
return await this.api.get<PopularMovies>(`${BASE_MOVIE}/popular?${params}`); return await this.api.get<PopularMovies>(`${BASE_MOVIE}/popular?${params}`);
} }
async topRated(options?: LocaleOptions): Promise<TopRatedMovies>{ async topRated(options?: LocaleOptions): Promise<TopRatedMovies>{
const params = options const params = options
? new URLSearchParams(Object.entries(options)).toString() ? new URLSearchParams(Object.entries(options)).toString()
: ''; : '';
return await this.api.get<TopRatedMovies>(`${BASE_MOVIE}/top_rated?${params}`); return await this.api.get<TopRatedMovies>(`${BASE_MOVIE}/top_rated?${params}`);
} }
async upcoming(options?: LocaleOptions): Promise<UpcomingMovies>{ async upcoming(options?: LocaleOptions): Promise<UpcomingMovies>{
const params = options const params = options
? new URLSearchParams(Object.entries(options)).toString() ? new URLSearchParams(Object.entries(options)).toString()
: ''; : '';
return await this.api.get<UpcomingMovies>(`${BASE_MOVIE}/upcoming?${params}`); return await this.api.get<UpcomingMovies>(`${BASE_MOVIE}/upcoming?${params}`);
} }

View File

@@ -13,9 +13,9 @@ export class PeopleEndpoint extends BaseEndpoint {
} }
async changes(id: number, options? : ChangeOptions): Promise<PersonChanges> { async changes(id: number, options? : ChangeOptions): Promise<PersonChanges> {
const params = options == undefined const params = options
? undefined ? new URLSearchParams(Object.entries(options)).toString()
: new URLSearchParams(Object.entries(options)).toString(); : '';
return await this.api.get<PersonChanges>(`${BASE_PERSON}/${id}/changes?${params}`); return await this.api.get<PersonChanges>(`${BASE_PERSON}/${id}/changes?${params}`);
} }
@@ -40,9 +40,9 @@ export class PeopleEndpoint extends BaseEndpoint {
} }
async taggedImages(id: number, options?: PageOptions): Promise<TaggedImages>{ async taggedImages(id: number, options?: PageOptions): Promise<TaggedImages>{
const params = options == undefined const params = options
? undefined ? new URLSearchParams(Object.entries(options)).toString()
: new URLSearchParams(Object.entries(options)).toString(); : '';
return await this.api.get<TaggedImages>(`${BASE_PERSON}/${id}/tagged_images?${params}`); return await this.api.get<TaggedImages>(`${BASE_PERSON}/${id}/tagged_images?${params}`);
} }
@@ -55,9 +55,9 @@ export class PeopleEndpoint extends BaseEndpoint {
} }
async popular(options?: PageOptions): Promise<PopularPersons>{ async popular(options?: PageOptions): Promise<PopularPersons>{
const params = options == undefined const params = options
? undefined ? new URLSearchParams(Object.entries(options)).toString()
: new URLSearchParams(Object.entries(options)).toString(); : '';
return await this.api.get<PopularPersons>(`${BASE_PERSON}/popular?${params}`); return await this.api.get<PopularPersons>(`${BASE_PERSON}/popular?${params}`);
} }
} }

View File

@@ -43,9 +43,9 @@ export class TvShowsEndpoint extends BaseEndpoint{
} }
async changes(id: number, options?: ChangeOptions): Promise<TvShowChanges>{ async changes(id: number, options?: ChangeOptions): Promise<TvShowChanges>{
const params = options == undefined const params = options
? undefined ? new URLSearchParams(Object.entries(options)).toString()
: new URLSearchParams(Object.entries(options)).toString(); : '';
return await this.api.get<TvShowChanges>(`${BASE_TV}/${id}/changes?${params}`); return await this.api.get<TvShowChanges>(`${BASE_TV}/${id}/changes?${params}`);
} }
@@ -78,16 +78,16 @@ export class TvShowsEndpoint extends BaseEndpoint{
} }
async recommendations(id: number, options?: PageOptions): Promise<Recommendations>{ async recommendations(id: number, options?: PageOptions): Promise<Recommendations>{
const params = options == undefined const params = options
? undefined ? new URLSearchParams(Object.entries(options)).toString()
: new URLSearchParams(Object.entries(options)).toString(); : '';
return await this.api.get<Recommendations>(`${BASE_TV}/${id}/recommendations?${params}`); return await this.api.get<Recommendations>(`${BASE_TV}/${id}/recommendations?${params}`);
} }
async reviews(id: number, options?: PageOptions): Promise<Reviews>{ async reviews(id: number, options?: PageOptions): Promise<Reviews>{
const params = options == undefined const params = options
? undefined ? new URLSearchParams(Object.entries(options)).toString()
: new URLSearchParams(Object.entries(options)).toString(); : '';
return await this.api.get<Reviews>(`${BASE_TV}/${id}/reviews?${params}`); return await this.api.get<Reviews>(`${BASE_TV}/${id}/reviews?${params}`);
} }
@@ -96,9 +96,9 @@ export class TvShowsEndpoint extends BaseEndpoint{
} }
async similar(id: number, options?: PageOptions): Promise<SimilarTvShows>{ async similar(id: number, options?: PageOptions): Promise<SimilarTvShows>{
const params = options == undefined const params = options
? undefined ? new URLSearchParams(Object.entries(options)).toString()
: new URLSearchParams(Object.entries(options)).toString(); : '';
return await this.api.get<SimilarTvShows>(`${BASE_TV}/${id}/similar?${params}`); return await this.api.get<SimilarTvShows>(`${BASE_TV}/${id}/similar?${params}`);
} }
@@ -127,23 +127,23 @@ export class TvShowsEndpoint extends BaseEndpoint{
} }
async airingToday(options?: LocaleOptions): Promise<TvShowsAiringToday>{ async airingToday(options?: LocaleOptions): Promise<TvShowsAiringToday>{
const params = options == undefined const params = options
? undefined ? new URLSearchParams(Object.entries(options)).toString()
: new URLSearchParams(Object.entries(options)).toString(); : '';
return await this.api.get<TvShowsAiringToday>(`${BASE_TV}/airing_today?${params}`); return await this.api.get<TvShowsAiringToday>(`${BASE_TV}/airing_today?${params}`);
} }
async popular(options?: PageOptions): Promise<PopularTvShows>{ async popular(options?: PageOptions): Promise<PopularTvShows>{
const params = options == undefined const params = options
? undefined ? new URLSearchParams(Object.entries(options)).toString()
: new URLSearchParams(Object.entries(options)).toString(); : '';
return await this.api.get<PopularTvShows>(`${BASE_TV}/popular?${params}`); return await this.api.get<PopularTvShows>(`${BASE_TV}/popular?${params}`);
} }
async topRated(options?: LocaleOptions): Promise<TopRatedTvShows>{ async topRated(options?: LocaleOptions): Promise<TopRatedTvShows>{
const params = options == undefined const params = options
? undefined ? new URLSearchParams(Object.entries(options)).toString()
: new URLSearchParams(Object.entries(options)).toString(); : '';
return await this.api.get<TopRatedTvShows>(`${BASE_TV}/top_rated?${params}`); return await this.api.get<TopRatedTvShows>(`${BASE_TV}/top_rated?${params}`);
} }
} }

View File

@@ -1,7 +1,6 @@
import { ParsedUrlQueryInput } from 'querystring';
import { Movie } from '.'; import { Movie } from '.';
export interface KeywordsOptions extends ParsedUrlQueryInput { export interface KeywordsOptions {
include_adult?: boolean; include_adult?: boolean;
language?: string; language?: string;
} }

View File

@@ -1,9 +1,7 @@
import { ParsedUrlQueryInput } from 'querystring'; export interface LanguageOption {
language?: string;
export interface LanguageOption extends ParsedUrlQueryInput {
language?: string;
} }
export interface PageOption extends ParsedUrlQueryInput { export interface PageOption {
page?: number; page?: number;
} }