Completed
Push — master ( ce2be0...7bcb9a )
by Olivier
02:08
created

Plan::get()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2.032

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 4
cts 5
cp 0.8
rs 9.9332
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 2.032
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This software may be modified and distributed under the terms
7
 * of the MIT license. See the LICENSE file for details.
8
 */
9
10
namespace Shapin\Stripe\Api;
11
12
use Shapin\Stripe\Configuration;
13
use Shapin\Stripe\Exception;
14
use Shapin\Stripe\Model\Plan\Plan as PlanModel;
15
use Shapin\Stripe\Model\Plan\PlanCollection;
16
use Symfony\Component\Config\Definition\Processor;
17
18
final class Plan extends HttpApi
19
{
20
    /**
21
     * @throws Exception
22
     */
23 1
    public function get(string $id)
24
    {
25 1
        $response = $this->httpGet("/v1/plans/$id");
26
27 1
        if (200 !== $response->getStatusCode()) {
28
            $this->handleErrors($response);
29
        }
30
31 1
        return $this->hydrator->hydrate($response, PlanModel::class);
32
    }
33
34
    /**
35
     * @throws Exception
36
     */
37 1
    public function all(array $params = [])
38
    {
39 1
        $response = $this->httpGet('/v1/plans'.http_build_query($params));
40
41 1
        if (200 !== $response->getStatusCode()) {
42
            $this->handleErrors($response);
43
        }
44
45 1
        return $this->hydrator->hydrate($response, PlanCollection::class);
46
    }
47
48
    /**
49
     * @throws Exception
50
     */
51
    public function create(array $params)
52
    {
53
        $processor = new Processor();
54
        $params = $processor->processConfiguration(new Configuration\PlanCreate(), [$params]);
55
56
        if (isset($params['existing_product'])) {
57
            $params['product'] = $params['existing_product'];
58
            unset($params['existing_product']);
59
        }
60
61
        $response = $this->httpPostRaw('/v1/plans', http_build_query($params), ['Content-Type' => 'application/x-www-form-urlencoded']);
62
63
        if (200 !== $response->getStatusCode()) {
64
            $this->handleErrors($response);
65
        }
66
67
        return $this->hydrator->hydrate($response, PlanModel::class);
68
    }
69
}
70