Client   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 126
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 15
Bugs 2 Features 12
Metric Value
wmc 11
c 15
b 2
f 12
lcom 1
cbo 3
dl 0
loc 126
ccs 39
cts 39
cp 1
rs 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A setGuzzleConfig() 0 6 1
A getGuzzleConfig() 0 4 1
A setApiKey() 0 6 1
A getApiKey() 0 4 1
A push() 0 8 1
A getWidgetsArray() 0 9 2
A pushWidgets() 0 6 2
A pushWidget() 0 12 1
1
<?php
2
3
namespace CarlosIO\Geckoboard;
4
5
use Guzzle\Http\Client as Guzzle;
6
use CarlosIO\Geckoboard\Widgets\Widget;
7
8
/**
9
 * Class Client.
10
 */
11
class Client
12
{
13
    const URI = 'https://push.geckoboard.com';
14
15
    /**
16
     * @var \Guzzle\Http\Client
17
     */
18
    protected $client;
19
20
    /**
21
     * @var string
22
     */
23
    protected $api;
24
25
    /**
26
     * Construct a new Geckoboard Client.
27
     */
28 2
    public function __construct()
29
    {
30 2
        $this->api = '';
31 2
        $this->client = new Guzzle(self::URI);
32 2
    }
33
34
    /**
35
     * @param array|\Guzzle\Common\Collection $config
36
     *
37
     * @return Client $this
38
     */
39 1
    public function setGuzzleConfig($config)
40
    {
41 1
        $this->client->setConfig($config);
42
43 1
        return $this;
44
    }
45
46
    /**
47
     * @param string|bool $key
48
     *
49
     * @return \Guzzle\Common\Collection|mixed
50
     */
51 1
    public function getGuzzleConfig($key = false)
52
    {
53 1
        return $this->client->getConfig($key);
0 ignored issues
show
Bug introduced by
It seems like $key defined by parameter $key on line 51 can also be of type string; however, Guzzle\Http\Client::getConfig() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that have been passed in as parameters and are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
54
    }
55
56
    /**
57
     * Set Geckoboard API key.
58
     *
59
     * @param $apiKey
60
     *
61
     * @return $this
62
     */
63 1
    public function setApiKey($apiKey)
64
    {
65 1
        $this->api = $apiKey;
66
67 1
        return $this;
68
    }
69
70
    /**
71
     * Get Geckoboard API key.
72
     *
73
     * @return string
74
     */
75 2
    public function getApiKey()
76
    {
77 2
        return $this->api;
78
    }
79
80
    /**
81
     * Send the widget info to Geckboard.
82
     *
83
     * @param $widget
84
     *
85
     * @return $this
86
     */
87 1
    public function push($widget)
88
    {
89 1
        $this->pushWidgets(
90 1
            $this->getWidgetsArray($widget)
91 1
        );
92
93 1
        return $this;
94
    }
95
96
    /**
97
     * @param $widget
98
     *
99
     * @return array
100
     */
101 1
    private function getWidgetsArray($widget)
102
    {
103 1
        $widgets = $widget;
104 1
        if (!is_array($widget)) {
105 1
            $widgets = array($widget);
106 1
        }
107
108 1
        return $widgets;
109
    }
110
111
    /**
112
     * @param $widgets
113
     */
114 1
    private function pushWidgets($widgets)
115
    {
116 1
        foreach ($widgets as $widget) {
117 1
            $this->pushWidget($widget);
118 1
        }
119 1
    }
120
121
    /**
122
     * @param $widget
123
     */
124 1
    private function pushWidget(Widget $widget)
125
    {
126 1
        $this->client->post(
127 1
            '/v1/send/'.$widget->getId(),
128 1
            null,
129 1
            json_encode(
130
                array(
131 1
                    'api_key' => $this->getApiKey(),
132 1
                    'data' => $widget->getData(),
133
                )
134 1
            ))->send();
135 1
    }
136
}
137