You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.9 KiB
83 lines
1.9 KiB
4 years ago
|
import { TmdbMovieDetails } from '../api/themoviedb';
|
||
|
import { MediaRequest } from '../entity/MediaRequest';
|
||
|
|
||
|
interface ProductionCompany {
|
||
|
id: number;
|
||
|
logoPath?: string;
|
||
|
originCountry: string;
|
||
|
name: string;
|
||
|
}
|
||
|
|
||
|
export interface MovieDetails {
|
||
|
id: number;
|
||
|
imdbId?: string;
|
||
|
adult: boolean;
|
||
|
backdropPath?: string;
|
||
|
budget: number;
|
||
|
genres: {
|
||
|
id: number;
|
||
|
name: string;
|
||
|
}[];
|
||
|
homepage?: string;
|
||
|
originalLanguage: string;
|
||
|
originalTitle: string;
|
||
|
overview?: string;
|
||
|
popularity: number;
|
||
|
posterPath?: string;
|
||
|
productionCompanies: ProductionCompany[];
|
||
|
productionCountries: {
|
||
|
iso_3166_1: string;
|
||
|
name: string;
|
||
|
}[];
|
||
|
releaseDate: string;
|
||
|
revenue: number;
|
||
|
runtime?: number;
|
||
|
spokenLanguages: {
|
||
|
iso_639_1: string;
|
||
|
name: string;
|
||
|
}[];
|
||
|
status: string;
|
||
|
tagline?: string;
|
||
|
title: string;
|
||
|
video: boolean;
|
||
|
voteAverage: number;
|
||
|
voteCount: number;
|
||
|
request?: MediaRequest;
|
||
|
}
|
||
|
|
||
|
export const mapMovieDetails = (
|
||
|
movie: TmdbMovieDetails,
|
||
|
request?: MediaRequest
|
||
|
): MovieDetails => ({
|
||
|
id: movie.id,
|
||
|
adult: movie.adult,
|
||
|
budget: movie.budget,
|
||
|
genres: movie.genres,
|
||
|
originalLanguage: movie.original_language,
|
||
|
originalTitle: movie.original_title,
|
||
|
popularity: movie.popularity,
|
||
|
productionCompanies: movie.production_companies.map((company) => ({
|
||
|
id: company.id,
|
||
|
logoPath: company.logo_path,
|
||
|
originCountry: company.origin_country,
|
||
|
name: company.name,
|
||
|
})),
|
||
|
productionCountries: movie.production_countries,
|
||
|
releaseDate: movie.release_date,
|
||
|
revenue: movie.revenue,
|
||
|
spokenLanguages: movie.spoken_languages,
|
||
|
status: movie.status,
|
||
|
title: movie.title,
|
||
|
video: movie.video,
|
||
|
voteAverage: movie.vote_average,
|
||
|
voteCount: movie.vote_count,
|
||
|
backdropPath: movie.backdrop_path,
|
||
|
homepage: movie.homepage,
|
||
|
imdbId: movie.imdb_id,
|
||
|
overview: movie.overview,
|
||
|
posterPath: movie.poster_path,
|
||
|
runtime: movie.runtime,
|
||
|
tagline: movie.tagline,
|
||
|
request,
|
||
|
});
|