Passed
Push — master ( 69d4f6...006bbe )
by Jhao
02:34
created

Services::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
1
<?php
2
3
/**
4
 * This file is part of RussianPost SDK package.
5
 *
6
 * © Appwilio (http://appwilio.com), JhaoDa (https://github.com/jhaoda)
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace Appwilio\RussianPostSDK\Dispatching\Endpoints\Services;
15
16
use Appwilio\RussianPostSDK\Dispatching\Http\ArrayOf;
17
use Appwilio\RussianPostSDK\Dispatching\Http\ApiClient;
18
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Entities\Balance;
19
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Entities\Calculation;
20
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Entities\CheckedRecipient;
21
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Entities\NormalizedFio;
22
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Entities\NormalizedPhone;
23
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Entities\NormalizedAddress;
24
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Requests\CalculationRequest;
25
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Requests\NormalizeFioRequest;
26
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Requests\NormalizePhoneRequest;
27
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Requests\CheckRecipientRequest;
28
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Requests\NormalizeAddressRequest;
29
30
final class Services
31
{
32
    /** @var ApiClient */
33
    private $client;
34
35 1
    public function __construct(ApiClient $client)
36
    {
37 1
        $this->client = $client;
38 1
    }
39
40
    /**
41
     * Нормализация телефона(ов).
42
     *
43
     * @link https://otpravka.pochta.ru/specification#/nogroup-normalization_phone
44
     *
45
     * @param  NormalizePhoneRequest  $request
46
     *
47
     * @return iterable|NormalizedPhone[]
48
     */
49
    public function normalizePhone(NormalizePhoneRequest $request): iterable
50
    {
51
        return $this->client->post('/1.0/clean/phone', $request, new ArrayOf(NormalizedPhone::class));
52
    }
53
54
    /**
55
     * Нормализация ФИО.
56
     *
57
     * @link https://otpravka.pochta.ru/specification#/nogroup-normalization_fio
58
     *
59
     * @param  NormalizeFioRequest  $request
60
     *
61
     * @return iterable|NormalizedFio[]
62
     */
63
    public function normalizeFio(NormalizeFioRequest $request): iterable
64
    {
65
        return $this->client->post('/1.0/clean/physical', $request, new ArrayOf(NormalizedFio::class));
66
    }
67
68
    /**
69
     * Нормализация адреса(ов).
70
     *
71
     * @link https://otpravka.pochta.ru/specification#/nogroup-normalization_adress
72
     *
73
     * @param  NormalizeAddressRequest  $request
74
     *
75
     * @return iterable|NormalizedAddress[]
76
     */
77
    public function normalizeAddress(NormalizeAddressRequest $request): iterable
78
    {
79
        return $this->client->post('/1.0/clean/address', $request, new ArrayOf(NormalizedAddress::class));
80
    }
81
82
    /**
83
     * Расчёт стоимости доставки.
84
     *
85
     * @link https://otpravka.pochta.ru/specification#/nogroup-rate_calculate
86
     *
87
     * @param  CalculationRequest  $request
88
     *
89
     * @return Calculation
90
     */
91
    public function calculate(CalculationRequest $request): Calculation
92
    {
93
        return $this->client->post('/1.0/tariff', $request, Calculation::class);
94
    }
95
96
    /**
97
     * Получение баланса расчётного счёта.
98
     *
99
     * @link https://otpravka.pochta.ru/specification#/nogroup-counterpart_balance
100
     *
101
     * @return Balance
102
     */
103
    public function getBalance(): Balance
104
    {
105
        return $this->client->get('/1.0/counterpart/balance', null, Balance::class);
106
    }
107
108
    /**
109
     * Проверка благонадёжности получателя(ей).
110
     *
111
     * @link https://otpravka.pochta.ru/specification#/nogroup-unreliable_recipient
112
     *
113
     * @param  CheckRecipientRequest  $request
114
     *
115
     * @return iterable|CheckedRecipient[]
116
     */
117
    public function checkRecipient(CheckRecipientRequest $request): iterable
118
    {
119
        return $this->client->post('/1.0/unreliable-recipient', $request, new ArrayOf(CheckedRecipient::class));
120
    }
121
}
122