Client::pushWidget()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 12
ccs 9
cts 9
cp 1
rs 9.4285
cc 1
eloc 9
nc 1
nop 1
crap 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