/
kano2711
/
perfectPanel
Обзор
Документация
Войти
/
kano2711
/
perfectPanel
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
api-test/controllers/ApiController.php
98 строк
3 KB
kano
добавил endpoint конвертации валют
12 окт 2025, 22:25
12 окт 2025, 22:25
0d9be94
Код
Авторство
О чём код?
<?php namespace app\controllers; use Yii; use yii\web\Controller; use yii\web\BadRequestHttpException; use yii\web\Response; use app\models\ConvertForm; use app\models\ConvertValidate; use app\repository\GetRates; use app\repository\ConvertCurrency; use app\services\Currency; class ApiController extends Controller { public function beforeAction($action) { $token = Yii::$app->request->getHeaders()->get('Authorization'); if ($token !== 'Bearer your_fixed_64_char_token') { Yii::$app->response->format = Response::FORMAT_JSON; return $this->asJson([ 'status' => 'error', 'code' => 403, 'message' => 'Invalid token' ]); } return parent::beforeAction($action); } public function actionIndex() { $method = Yii::$app->request->get('method'); match ($method) { 'rates' => $this->actionRates(), 'convert' => $this->actionConvert(), default => $this->asJson([ 'status' => 'error', 'code' => 400, 'message' => 'Unknown method' ]) }; } /** * Получение курсов валют. * Если передаётся параметр с валютой, то возвращает курсы валют валюты по отношению ко всем имеющимся. * * @return Response */ public function actionRates(): Response { $getRates = Yii::$container->get('app\repository\GetRates'); $getRates = Yii::$container->get(GetRates::class); return $this->asJson([ 'status' => 'success', 'code' => 200, 'data' => $getRates->getRates() ]); } /** * Конвертация валюты. * Ожидается 3 входных параметра: * - currency_from - валюта, которую нужно конвертировать * - currency_to - валюта, в которую нужно конвертировать * - value - значение валюты, которую нужно конвертировать * * @return Response */ public function actionConvert(): Response { $model = new ConvertValidate(); $model->currency_from = Yii::$app->request->get('currency_from'); $model->currency_to = Yii::$app->request->get('currency_to'); $model->value = Yii::$app->request->get('value'); if (!$model->validate()) { return $this->asJson([ 'success' => false, 'code' => 400, 'errors' => $model->getErrors() ]); } $converCurrency = Yii::$container->get(ConvertCurrency::class); return $this->asJson([ 'status' => 'success', 'code' => 200, 'data' => $converCurrency->convert() ]); } }