mirror of
https://gitlab.com/foxixus/neomovies-api.git
synced 2025-10-27 17:38:51 +05:00
feat(images): proxy external http(s) poster URLs; feat(players): accept 'kinopoisk_id' alias for Lumex
This commit is contained in:
@@ -1,15 +1,15 @@
|
|||||||
package handlers
|
package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"neomovies-api/pkg/config"
|
"neomovies-api/pkg/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ImagesHandler struct{}
|
type ImagesHandler struct{}
|
||||||
@@ -36,7 +36,14 @@ func (h *ImagesHandler) GetImage(w http.ResponseWriter, r *http.Request) {
|
|||||||
size = "original"
|
size = "original"
|
||||||
}
|
}
|
||||||
|
|
||||||
imageURL := fmt.Sprintf("%s/%s/%s", config.TMDBImageBaseURL, size, imagePath)
|
var imageURL string
|
||||||
|
if strings.HasPrefix(imagePath, "http://") || strings.HasPrefix(imagePath, "https://") {
|
||||||
|
// Проксируем внешний абсолютный URL (например, Kinopoisk)
|
||||||
|
imageURL = imagePath
|
||||||
|
} else {
|
||||||
|
// TMDB относительный путь
|
||||||
|
imageURL = fmt.Sprintf("%s/%s/%s", config.TMDBImageBaseURL, size, imagePath)
|
||||||
|
}
|
||||||
|
|
||||||
resp, err := http.Get(imageURL)
|
resp, err := http.Get(imageURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ func (h *PlayersHandler) GetAllohaPlayer(w http.ResponseWriter, r *http.Request)
|
|||||||
log.Printf("GetAllohaPlayer called: %s %s", r.Method, r.URL.Path)
|
log.Printf("GetAllohaPlayer called: %s %s", r.Method, r.URL.Path)
|
||||||
|
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
idType := vars["id_type"]
|
idType := vars["id_type"]
|
||||||
id := vars["id"]
|
id := vars["id"]
|
||||||
|
|
||||||
if idType == "" || id == "" {
|
if idType == "" || id == "" {
|
||||||
@@ -39,9 +39,10 @@ func (h *PlayersHandler) GetAllohaPlayer(w http.ResponseWriter, r *http.Request)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if idType != "kp" && idType != "imdb" {
|
if idType == "kinopoisk_id" { idType = "kp" }
|
||||||
|
if idType != "kp" && idType != "imdb" {
|
||||||
log.Printf("Error: invalid id_type: %s", idType)
|
log.Printf("Error: invalid id_type: %s", idType)
|
||||||
http.Error(w, "id_type must be 'kp' or 'imdb'", http.StatusBadRequest)
|
http.Error(w, "id_type must be 'kp' (kinopoisk_id) or 'imdb'", http.StatusBadRequest)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user