Skip to content
Snippets Groups Projects
Commit eec79267 authored by Angela Livia Arumsari's avatar Angela Livia Arumsari
Browse files

feat: add endpoint to get image file

parent 6e3ec817
Branches feature/polling-films
Tags
1 merge request!2endpoint for polling and get image file, fix search issue, modify db
...@@ -41,6 +41,7 @@ class App ...@@ -41,6 +41,7 @@ class App
$this->router->addRoute('/films', FilmController::class); $this->router->addRoute('/films', FilmController::class);
$this->router->addRoute('/film-details', FilmController::class); $this->router->addRoute('/film-details', FilmController::class);
$this->router->addRoute('/film-polling', FilmController::class); $this->router->addRoute('/film-polling', FilmController::class);
$this->router->addRoute('/film-image', FilmController::class);
$this->router->addRoute('/search', FilmController::class); $this->router->addRoute('/search', FilmController::class);
$this->router->addRoute('/add-film', CreateFilmController::class); $this->router->addRoute('/add-film', CreateFilmController::class);
$this->router->addRoute('/update-film', UpdateFilmController::class); $this->router->addRoute('/update-film', UpdateFilmController::class);
......
...@@ -9,6 +9,7 @@ use app\services\FavoriteService; ...@@ -9,6 +9,7 @@ use app\services\FavoriteService;
use app\services\FilmService; use app\services\FilmService;
use app\services\ReviewService; use app\services\ReviewService;
use app\services\UserService; use app\services\UserService;
use Exception;
class FilmController extends BaseController class FilmController extends BaseController
{ {
...@@ -67,13 +68,34 @@ class FilmController extends BaseController ...@@ -67,13 +68,34 @@ class FilmController extends BaseController
parent::render($data, 'film-details', "layouts/base"); parent::render($data, 'film-details', "layouts/base");
} else if ($uri == '/film-polling') { } else if ($uri == '/film-polling') {
$isInitialSync = $_GET['initial'] ?? 'no'; $isInitialSync = $_GET['initial'] ?? 'no';
error_log($isInitialSync);
$data = $this->service->polling($isInitialSync); $data = $this->service->polling($isInitialSync);
$films = []; $films = [];
foreach ($data as $film) { foreach ($data as $film) {
$films[] = $film->toResponse(); $films[] = array(
'film_id' => $film->film_id,
'image_path' => $film->image_path,
'title' => $film->title);
} }
response::send_json_response($films); response::send_json_response($films);
} else if ($uri == '/film-image') {
try {
$filmID = $_GET['id'];
$imagePath = $_SERVER['DOCUMENT_ROOT'] . '/' . $this->service->getImagePath($filmID);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: inline; filename="' . basename($imagePath) . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($imagePath));
readfile($imagePath);
exit;
}
catch (Exception $e) {
$msg = $e->getMessage();
$data["error_code"] = $msg;
response::send_json_response($data, 400);
}
} }
} }
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
namespace app\services; namespace app\services;
use app\base\BaseService; use app\base\BaseService;
use app\exceptions\BadRequestException;
use app\models\FilmModel; use app\models\FilmModel;
use app\repositories\FilmRepository; use app\repositories\FilmRepository;
use PDO; use PDO;
...@@ -74,6 +75,20 @@ class FilmService extends BaseService ...@@ -74,6 +75,20 @@ class FilmService extends BaseService
return null; return null;
} }
public function getImagePath($film_id)
{
if (!$film_id) {
throw new BadRequestException("INVALID_ID");
}
$film = $this->repository->getById($film_id);
if ($film) {
return "public/" . $film["image_path"];
}
throw new BadRequestException("IMAGE_NOT_FOUND");
}
public function update($film) public function update($film)
{ {
$arrParams = []; $arrParams = [];
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment