OpenStates   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 82
Duplicated Lines 29.27 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
c 1
b 0
f 0
lcom 0
cbo 2
dl 24
loc 82
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A setClient() 11 11 1
A getClient() 0 4 1
A legislators() 13 13 3
A geoLookup() 0 6 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
/**
3
 * Sunlight-php
4
 *
5
 * PHP Version 7.0.1
6
 *
7
 * @category Sunlight_Foundation_API
8
 * @package  ContactMyReps
9
 * @author   edfialk <[email protected]>
10
 * @license  http://opensource.org/licenses/MIT MIT License
11
 * @link     https://github.com/contactmyreps/sunlight-php
12
 */
13
14
namespace ContactMyReps\Sunlight\api;
15
16
use ContactMyReps\Sunlight\api\BaseAPI;
17
use GuzzleHttp\Client;
18
19
/**
20
* Sunlight Foundation OpenStates API wrapper
21
* For more information see https://sunlightlabs.github.io/openstates-api
22
*
23
* @category Sunlight_Foundation_API
24
* @package  ContactMyReps
25
* @author   edfialk <[email protected]>
26
* @license  http://opensource.org/licenses/MIT MIT License
27
* @link     https://github.com/contactmyreps/sunlight-php
28
*/
29
class OpenStates extends BaseAPI
30
{
31
32
    const BASE_URI = 'http://openstates.org/api/v1/';
33
34
    /**
35
     * Create OpenStates API
36
     *
37
     * @param array $options api options (json, sync, etc.)
38
     */
39
    public function __construct($options = [])
40
    {
41
        parent::__construct($options);
42
    }
43
44
    /**
45
     * Create Guzzle Client
46
     *
47
     * @param string $key Sunlight Foundation API key
48
     *
49
     * @return null
50
     */
51 View Code Duplication
    public function setClient($key)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
52
    {
53
        $this->client = new Client(
0 ignored issues
show
Bug introduced by
The property client does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
54
            [
55
            'base_uri' => self::BASE_URI,
56
            'headers' => [
57
            'X-APIKEY' => $key
58
            ]
59
            ]
60
        );
61
    }
62
63
    /**
64
     * Return Guzzle Client
65
     *
66
     * @return GuzzleHTTP/Client OpenStates Guzzle Client
0 ignored issues
show
Documentation introduced by
The doc-type GuzzleHTTP/Client could not be parsed: Unknown type name "GuzzleHTTP/Client" at position 0. (view supported doc-types)

This check marks PHPDoc comments that could not be parsed by our parser. To see which comment annotations we can parse, please refer to our documentation on supported doc-types.

Loading history...
67
     */
68
    public function getClient()
69
    {
70
        return $this->client;
71
    }
72
73
    /**
74
     * Search OpenStates Legislators
75
     *
76
     * @param array $search search fields
77
     * @param array $fields display fields
78
     *
79
     * @return Response         Guzzle Response
80
     */
81 View Code Duplication
    public function legislators($search = [], $fields = [])
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
82
    {
83
        $url = 'legislators/?';
84
        if (count($search) > 0) {
85
            $p = [];
86
            foreach ($search as $k => $v) {
87
                $p[] = "$k=$v";
88
            }
89
            $url .= implode("&", $p);
90
        }
91
92
        return $this->get($url, $fields);
93
    }
94
95
    /**
96
     * Lookup legislators that serve districts containing a given point
97
     *
98
     * @param float $lat    Latitude
99
     * @param float $lng    Longitude
100
     * @param array $fields display fields
101
     *
102
     * @return Response         Guzzle Response
103
     */
104
    public function geoLookup($lat, $lng, $fields = [])
105
    {
106
        $url = 'legislators/geo/?lat='.$lat.'&long='.$lng;
107
108
        return $this->get($url, $fields);
109
    }
110
}
111