banki.test/controllers/ApiController.php

53 lines
1.4 KiB
PHP

<?php
namespace app\controllers;
use app\models\Parameter;
use app\models\Image;
use yii\filters\ContentNegotiator;
use yii\web\NotFoundHttpException;
use yii\web\Request;
use yii\web\Response;
class ApiController extends \yii\rest\Controller
{
public function actionIndex()
{
return [
'images' => Image::find()->join('INNER JOIN', 'parameters', 'parameters.icon_id = image.id OR parameters.icon_gray_id = image.id')->all(),
'params' => Parameter::find()->all(),
];
}
public function actionImage(Request $request, Response $response)
{
$img = Image::find()->where([ 'sha256' => $request->getQueryParam('sha256') ])->one();
if (!$img) {
throw new NotFoundHttpException();
}
$response->headers->set('Content-Type', $img->mime);
$response->headers->set('X-Image-Data', json_encode($img->getAttributes()));
return $response->sendFile(env('UPLOADS_PATH') . '/' . $img->sha256, $img->original_name);
}
public function verbs()
{
return [
'index' => [ 'GET' ],
];
}
public function behaviors()
{
return [
[
'class' => ContentNegotiator::class,
'formats' => [
'image/*' => Response::FORMAT_RAW,
'application/json' => Response::FORMAT_JSON
]
]
];
}
}