mirror of
https://gitlab.com/foxixus/neomovies-api.git
synced 2025-10-27 17:38:51 +05:00
feat: Add id_type parameter support for movies and TV shows
This commit is contained in:
@@ -55,8 +55,9 @@ func (h *MovieHandler) GetByID(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
language := GetLanguage(r)
|
language := GetLanguage(r)
|
||||||
|
idType := r.URL.Query().Get("id_type") // kp or tmdb
|
||||||
|
|
||||||
movie, err := h.movieService.GetByID(id, language)
|
movie, err := h.movieService.GetByID(id, language, idType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -54,8 +54,9 @@ func (h *TVHandler) GetByID(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
language := GetLanguage(r)
|
language := GetLanguage(r)
|
||||||
|
idType := r.URL.Query().Get("id_type") // kp or tmdb
|
||||||
|
|
||||||
tvShow, err := h.tvService.GetByID(id, language)
|
tvShow, err := h.tvService.GetByID(id, language, idType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -28,8 +28,19 @@ func (s *MovieService) Search(query string, page int, language, region string, y
|
|||||||
return s.tmdb.SearchMovies(query, page, language, region, year)
|
return s.tmdb.SearchMovies(query, page, language, region, year)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MovieService) GetByID(id int, language string) (*models.Movie, error) {
|
func (s *MovieService) GetByID(id int, language string, idType string) (*models.Movie, error) {
|
||||||
if ShouldUseKinopoisk(language) && s.kpService != nil {
|
// Если указан id_type, используем его; иначе определяем по языку
|
||||||
|
useKP := false
|
||||||
|
if idType == "kp" {
|
||||||
|
useKP = true
|
||||||
|
} else if idType == "tmdb" {
|
||||||
|
useKP = false
|
||||||
|
} else {
|
||||||
|
// Если id_type не указан, используем старую логику по языку
|
||||||
|
useKP = ShouldUseKinopoisk(language)
|
||||||
|
}
|
||||||
|
|
||||||
|
if useKP && s.kpService != nil {
|
||||||
kpFilm, err := s.kpService.GetFilmByKinopoiskId(id)
|
kpFilm, err := s.kpService.GetFilmByKinopoiskId(id)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return MapKPFilmToTMDBMovie(kpFilm), nil
|
return MapKPFilmToTMDBMovie(kpFilm), nil
|
||||||
|
|||||||
@@ -24,8 +24,19 @@ func (s *TVService) Search(query string, page int, language string, year int) (*
|
|||||||
return s.tmdb.SearchTVShows(query, page, language, year)
|
return s.tmdb.SearchTVShows(query, page, language, year)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TVService) GetByID(id int, language string) (*models.TVShow, error) {
|
func (s *TVService) GetByID(id int, language string, idType string) (*models.TVShow, error) {
|
||||||
if ShouldUseKinopoisk(language) && s.kpService != nil {
|
// Если указан id_type, используем его; иначе определяем по языку
|
||||||
|
useKP := false
|
||||||
|
if idType == "kp" {
|
||||||
|
useKP = true
|
||||||
|
} else if idType == "tmdb" {
|
||||||
|
useKP = false
|
||||||
|
} else {
|
||||||
|
// Если id_type не указан, используем старую логику по языку
|
||||||
|
useKP = ShouldUseKinopoisk(language)
|
||||||
|
}
|
||||||
|
|
||||||
|
if useKP && s.kpService != nil {
|
||||||
kpFilm, err := s.kpService.GetFilmByKinopoiskId(id)
|
kpFilm, err := s.kpService.GetFilmByKinopoiskId(id)
|
||||||
if err == nil && kpFilm != nil {
|
if err == nil && kpFilm != nil {
|
||||||
return MapKPFilmToTVShow(kpFilm), nil
|
return MapKPFilmToTVShow(kpFilm), nil
|
||||||
|
|||||||
Reference in New Issue
Block a user