GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

LoadBalancers   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 116
Duplicated Lines 25.86 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 3
Bugs 1 Features 0
Metric Value
wmc 5
c 3
b 1
f 0
lcom 0
cbo 1
dl 30
loc 116
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A load_balancers() 0 4 1
A create() 15 15 1
A update() 15 15 1
A delete_load_balancer() 0 4 1
A details() 0 4 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
namespace Cloudflare\Zone;
4
5
use Cloudflare\Api;
6
7
/**
8
 * CloudFlare API wrapper
9
 *
10
 * CTM Load Balancer
11
 * User-level Cloud Traffic Manager Load Balancer
12
 *
13
 * @author James Bell <[email protected]>
14
 *
15
 * @version 1
16
 */
17
class LoadBalancers extends Api
18
{
19
    /**
20
     * List load balancers
21
     * List configured load balancers
22
     *
23
     * @param string $zone_identifier
24
     */
25
    public function load_balancers($zone_identifier)
26
    {
27
        return $this->get('/zones/'.$zone_identifier.'/load_balancers');
28
    }
29
30
    /**
31
     * Create a load balancer
32
     * Create a new load balancer
33
     *
34
     * @param string      $zone_identifier
35
     * @param string      $name            The DNS hostname to associate with your Load Balancer. If this hostname already
36
     *                                     exists as a DNS record in Cloudflare's DNS, the Load Balancer will take
37
     *                                     precedence and the DNS record will not be used.
38
     * @param string      $fallback_pool   The pool ID to use when all other pools are detected as unhealthy.
39
     * @param array       $default_pools   A list of pool IDs ordered by their failover priority. Pools defined here are
40
     *                                     used by default, or when region_pools are not configured for a given region.
41
     * @param string|null $description     Object description.
42
     * @param int|null    $ttl             Time to live (TTL) of the DNS entry for the IP address returned by this load
43
     *                                     balancer. This only applies to gray-clouded (unproxied) load balancers.
44
     * @param object|null $region_pools    A mapping of region/country codes to a list of pool IDs (ordered by their
45
     *                                     failover priority) for the given region. Any regions not explicitly defined
46
     *                                     will fall back to using default_pools.
47
     * @param int|null    $pop_pools       (Enterprise only): A mapping of Cloudflare PoP identifiers to a list of pool IDs
48
     *                                     (ordered by their failover priority) for the PoP (datacenter). Any PoPs not
49
     *                                     explicitly defined will fall back to using default_pools.
50
     *                                     balancer. This only applies to gray-clouded (unproxied) load balancers.
51
     * @param bool|null   $proxied         Whether the hostname should be gray clouded (false) or orange clouded (true).
52
     */
53 View Code Duplication
    public function create($zone_identifier, $name, $fallback_pool, $default_pools, $description = null, $ttl = null, $region_pools = null, $pop_pools = null, $proxied = null)
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...
54
    {
55
        $data = [
56
            'name'          => $name,
57
            'fallback_pool' => $fallback_pool,
58
            'default_pools' => $default_pools,
59
            'description'   => $description,
60
            'ttl'           => $ttl,
61
            'region_pools'  => $region_pools,
62
            'pop_pools'     => $pop_pools,
63
            'proxied'       => $proxied,
64
        ];
65
66
        return $this->post('/zones/'.$zone_identifier.'/load_balancers', $data);
67
    }
68
69
    /**
70
     * Load balancer details
71
     * Fetch a single configured load balancer
72
     *
73
     * @param string $zone_identifier
74
     * @param string $identifier
75
     */
76
    public function details($zone_identifier, $identifier)
77
    {
78
        return $this->get('/zones/'.$zone_identifier.'/load_balancers/'.$identifier);
79
    }
80
81
    /**
82
     * Modify a load balancer
83
     * Modify a configured load balancer
84
     *
85
     * @param string      $zone_identifier
86
     * @param string      $identifier
87
     * @param string      $name            The DNS hostname to associate with your Load Balancer. If this hostname already
88
     *                                     exists as a DNS record in Cloudflare's DNS, the Load Balancer will take
89
     *                                     precedence and the DNS record will not be used.
90
     * @param string      $fallback_pool   The pool ID to use when all other pools are detected as unhealthy.
91
     * @param array       $default_pools   A list of pool IDs ordered by their failover priority. Pools defined here are
92
     *                                     used by default, or when region_pools are not configured for a given region.
93
     * @param string|null $description     Object description.
94
     * @param int|null    $ttl             Time to live (TTL) of the DNS entry for the IP address returned by this load
95
     *                                     balancer. This only applies to gray-clouded (unproxied) load balancers.
96
     * @param object|null $region_pools    A mapping of region/country codes to a list of pool IDs (ordered by their
97
     *                                     failover priority) for the given region. Any regions not explicitly defined
98
     *                                     will fall back to using default_pools.
99
     * @param int|null    $pop_pools       (Enterprise only): A mapping of Cloudflare PoP identifiers to a list of pool IDs
100
     *                                     (ordered by their failover priority) for the PoP (datacenter). Any PoPs not
101
     *                                     explicitly defined will fall back to using default_pools.
102
     *                                     balancer. This only applies to gray-clouded (unproxied) load balancers.
103
     * @param bool|null   $proxied         Whether the hostname should be gray clouded (false) or orange clouded (true).
104
     */
105 View Code Duplication
    public function update($zone_identifier, $identifier, $name, $fallback_pool, $default_pools, $description = null, $ttl = null, $region_pools = null, $pop_pools = null, $proxied = null)
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...
106
    {
107
        $data = [
108
            'name'          => $name,
109
            'fallback_pool' => $fallback_pool,
110
            'default_pools' => $default_pools,
111
            'description'   => $description,
112
            'ttl'           => $ttl,
113
            'region_pools'  => $region_pools,
114
            'pop_pools'     => $pop_pools,
115
            'proxied'       => $proxied,
116
        ];
117
118
        return $this->patch('/zones/'.$zone_identifier.'/load_balancers/'.$identifier, $data);
119
    }
120
121
    /**
122
     * Delete a load balancer
123
     * Delete a configured load balancer
124
     *
125
     * @param string $zone_identifier
126
     * @param string $identifier
127
     */
128
    public function delete_load_balancer($zone_identifier, $identifier)
129
    {
130
        return $this->delete('/zones/'.$zone_identifier.'/load_balancers/'.$identifier);
131
    }
132
}
133