Passed
Push — master ( bebbb3...38c082 )
by Mattia
03:32
created

BaseApiController::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
nc 1
nop 3
dl 0
loc 8
rs 10
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Http\Controllers\Api;
6
7
use App\Core as MinepicCore;
8
use App\Resolvers\UsernameResolver;
9
use Illuminate\Http\Request;
10
use Illuminate\Http\Response;
11
use Laravel\Lumen\Http\ResponseFactory;
12
use Laravel\Lumen\Routing\Controller as BaseController;
13
14
/**
15
 * Class BaseApiController.
16
 */
17
abstract class BaseApiController extends BaseController
18
{
19
    /**
20
     * @var MinepicCore
21
     */
22
    protected $minepic;
23
    /**
24
     * @var ResponseFactory
25
     */
26
    protected $responseFactory;
27
    /**
28
     * @var UsernameResolver
29
     */
30
    protected UsernameResolver $usernameResolver;
31
32
    /**
33
     * Api constructor.
34
     *
35
     * @param MinepicCore      $minepic          Minepic Core Instance
36
     * @param ResponseFactory  $responseFactory  Response Factory
37
     * @param UsernameResolver $usernameResolver
38
     */
39
    public function __construct(
40
        MinepicCore $minepic,
41
        ResponseFactory $responseFactory,
42
        UsernameResolver $usernameResolver
43
    ) {
44
        $this->minepic = $minepic;
45
        $this->responseFactory = $responseFactory;
46
        $this->usernameResolver = $usernameResolver;
47
    }
48
49
    /**
50
     * @param Request $request Injected Request
51
     * @param string  $uuid
52
     * @param int     $size    Avatar size User UUID or name
53
     *
54
     * @return Response
55
     */
56
    abstract public function serveUuid(Request $request, string $uuid, $size = 256): Response;
57
58
    /**
59
     * @param Request $request
60
     * @param string  $username
61
     * @param int     $size
62
     *
63
     * @throws \Throwable
64
     *
65
     * @return Response
66
     */
67
    public function serveUsername(Request $request, string $username, $size = 0): Response
68
    {
69
        $uuid = $this->usernameResolver->resolve($username);
70
71
        return $this->serveUuid($request, $uuid, $size);
72
    }
73
74
    /**
75
     * @param string $image
76
     *
77
     * @return Response
78
     */
79
    public function pngResponse(string $image)
80
    {
81
        return $this->responseFactory->make($image, Response::HTTP_OK, ['Content-Type' => 'image/png']);
82
    }
83
}
84