Completed
Pull Request — master (#13)
by Jhao
03:24
created

Services   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 7
eloc 9
c 2
b 0
f 0
dl 0
loc 76
rs 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A checkRecipient() 0 3 1
A normalizePhone() 0 3 1
A calculate() 0 3 1
A getBalance() 0 3 1
A __construct() 0 3 1
A normalizeFio() 0 3 1
A normalizeAddress() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Appwilio\RussianPostSDK\Dispatching\Endpoints\Services;
6
7
use Appwilio\RussianPostSDK\Dispatching\Http\ArrayOf;
8
use Appwilio\RussianPostSDK\Dispatching\Http\ApiClient;
9
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Requests\CalculationRequest;
10
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Requests\NormalizeFioRequest;
11
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Requests\NormalizePhoneRequest;
12
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Requests\CheckRecipientRequest;
13
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Requests\NormalizeAddressRequest;
14
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Responses\Fio;
15
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Responses\Phone;
16
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Responses\Address;
17
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Responses\Recipient;
18
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Responses\BalanceReponse;
19
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Responses\CalculationResponse;
20
21
final class Services
22
{
23
    /** @var ApiClient */
24
    private $client;
25
26
    public function __construct(ApiClient $client)
27
    {
28
        $this->client = $client;
29
    }
30
31
    /**
32
     * Нормализация телефона(ов).
33
     *
34
     * @param  NormalizePhoneRequest  $request
35
     *
36
     * @return iterable|Phone[]
37
     */
38
    public function normalizePhone(NormalizePhoneRequest $request): iterable
39
    {
40
        return $this->client->post('/1.0/clean/phone', $request, new ArrayOf(Phone::class));
41
    }
42
43
    /**
44
     * Нормализация адреса(ов).
45
     *
46
     * @param  NormalizeAddressRequest  $request
47
     *
48
     * @return iterable|Address[]
49
     */
50
    public function normalizeAddress(NormalizeAddressRequest $request): iterable
51
    {
52
        return $this->client->post('/1.0/clean/address', $request, new ArrayOf(Address::class));
53
    }
54
55
    /**
56
     * Нормализация ФИО.
57
     *
58
     * @param  NormalizeFioRequest  $request
59
     *
60
     * @return iterable|Fio[]
61
     */
62
    public function normalizeFio(NormalizeFioRequest $request): iterable
63
    {
64
        return $this->client->post('/1.0/clean/physical', $request, new ArrayOf(Fio::class));
65
    }
66
67
    /**
68
     * Расчёт стоимости доставки.
69
     *
70
     * @param  CalculationRequest  $request
71
     *
72
     * @return CalculationResponse
73
     */
74
    public function calculate(CalculationRequest $request): CalculationResponse
75
    {
76
        return $this->client->post('/1.0/tariff', $request, CalculationResponse::class);
77
    }
78
79
    /**
80
     * @return BalanceReponse
81
     */
82
    public function getBalance(): BalanceReponse
83
    {
84
        return $this->client->get('/1.0/counterpart/balance', null, BalanceReponse::class);
85
    }
86
87
    /**
88
     * Проверка благонадёжности получателя(ей).
89
     *
90
     * @param  CheckRecipientRequest  $request
91
     *
92
     * @return iterable|Recipient[]
93
     */
94
    public function checkRecipient(CheckRecipientRequest $request): iterable
95
    {
96
        return $this->client->post('/1.0/unreliable-recipient', $request, new ArrayOf(Recipient::class));
97
    }
98
}
99