Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
57.14% covered (warning)
57.14%
8 / 14
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
CaptchaVerifyController
57.14% covered (warning)
57.14%
8 / 14
50.00% covered (danger)
50.00%
1 / 2
6.97
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 readResponse
53.85% covered (warning)
53.85%
7 / 13
0.00% covered (danger)
0.00%
0 / 1
5.57
1<?php
2
3declare(strict_types=1);
4
5namespace BO\Zmscitizenapi\Controllers\Captcha;
6
7use BO\Zmscitizenapi\BaseController;
8use BO\Zmscitizenapi\Utils\ErrorMessages;
9use BO\Zmscitizenapi\Services\Captcha\CaptchaService;
10use BO\Zmscitizenapi\Services\Core\ValidationService;
11use Psr\Http\Message\RequestInterface;
12use Psr\Http\Message\ResponseInterface;
13
14class CaptchaVerifyController extends BaseController
15{
16    private CaptchaService $service;
17    public function __construct()
18    {
19        $this->service = new CaptchaService();
20    }
21
22    #[\Override]
23    public function readResponse(RequestInterface $request, ResponseInterface $response, array $args): ResponseInterface
24    {
25        $requestErrors = ValidationService::validateServerPostRequest($request);
26
27        if (!empty($requestErrors['errors'])) {
28            return $this->createJsonResponse(
29                $response,
30                $requestErrors,
31                ErrorMessages::get('invalidRequest')['statusCode']
32            );
33        }
34
35        $data = $request->getParsedBody();
36        $payload = $data['payload'] ?? null;
37        $result = $this->service->verifySolution($payload);
38        return is_array($result) && isset($result['errors'])
39            ? $this->createJsonResponse($response, $result, ErrorMessages::getHighestStatusCode($result['errors']))
40            : $this->createJsonResponse($response, $result, 200);
41    }
42}