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.
Passed
Push — master ( 795d55...eff8e0 )
by Oleg
03:35 queued 01:34
created

Route4Me::getFileRealPath()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 1
1
<?php
2
namespace Route4Me;
3
4
use Route4Me\Exception\ApiError;
5
use Route4Me\Exception\myErrorHandler;
6
use Route4Me\Enum\Endpoint;
7
8
class Route4Me
9
{
10
    static public $apiKey;
11
    static public $baseUrl = Endpoint::BASE_URL;
12
13
    public static function setApiKey($apiKey)
14
    {
15
        self::$apiKey = $apiKey;
16
    }
17
18
    public static function getApiKey()
19
    {
20
        return self::$apiKey;
21
    }
22
23
    public static function setBaseUrl($baseUrl)
24
    {
25
        self::$baseUrl = $baseUrl;
26
    }
27
28
    public static function getBaseUrl()
29
    {
30
        return self::$baseUrl;
31
    }
32
    
33
    public static function makeRequst($options) {
34
        $errorHandler = new myErrorHandler();
35
36
        $old_error_handler = set_error_handler(array($errorHandler, "proc_error"));
0 ignored issues
show
Unused Code introduced by
$old_error_handler is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
37
38
        $method = isset($options['method']) ? $options['method'] : 'GET';
39
        $query = isset($options['query']) ? array_filter($options['query'], function($x) { return !is_null($x); } ) : array();
40
41
        $body = isset($options['body']) ? $options['body'] : null;
42
        $file = isset($options['FILE']) ? $options['FILE'] : null;
43
        $headers = array(
44
            "User-Agent: Route4Me php-sdk"
45
        );
46
47
        if (isset($options['HTTPHEADER'])) {
48
            $headers[] = $options['HTTPHEADER'];
49
        }
50
51
        if (isset($options['HTTPHEADERS'])) {
52
            foreach ($options['HTTPHEADERS'] As $header) {
53
                $headers[] = $header;
54
            } 
55
        }
56
57
        $ch = curl_init();
58
59
        $url = isset($options['url']) ? $options['url'].'?'.http_build_query(array_merge(
60
            $query, array('api_key' => self::getApiKey())
61
        )) : "";
62
63
        $baseUrl = self::getBaseUrl();
64
 
65
        $curlOpts = array(
66
            CURLOPT_URL            => $baseUrl.$url,
67
            CURLOPT_RETURNTRANSFER => true,
68
            CURLOPT_TIMEOUT        => 80,
69
            CURLOPT_FOLLOWLOCATION => true,
70
            CURLOPT_SSL_VERIFYHOST => FALSE,
71
            CURLOPT_SSL_VERIFYPEER => FALSE,
72
            CURLOPT_HTTPHEADER     => $headers
73
        );
74
        
75
        curl_setopt_array($ch, $curlOpts);
76
        
77
        if ($file!=null) {
78
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
79
            $fp=fopen($file, 'r');
80
            curl_setopt($ch, CURLOPT_INFILE, $fp);
81
            curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file));
82
        }
83
84
        switch ($method) {
85
        case 'DELETE':
86
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); 
87
            break;
88
        case 'DELETEARRAY':
89
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); 
90
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($query));
91
            break;
92
        case 'PUT':
93
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
94
            break;
95
        case 'POST':
96
           if (isset($body)) {
97
                $bodyData = json_encode($body);
98
               if (isset($options['HTTPHEADER'])) {
99
                  if (strpos($options['HTTPHEADER'], "multipart/form-data")>0) {
100
                      $bodyData = $body;
101
                  }
102
               }
103
               
104
               curl_setopt($ch, CURLOPT_POSTFIELDS, $bodyData); 
105
            } 
106
            break;
107
        case 'ADD':
108
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($query)); break;
109
        }
110
111
        if (is_numeric(array_search($method, array('DELETE', 'PUT')))) {
112
            if (isset($body)) {
113
                curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body)); 
114
            } 
115
        }
116
117
        $result = curl_exec($ch);
118
119
        $isxml = FALSE;
120
        $jxml = "";
121
        if (strpos($result, '<?xml')>-1) {
122
            $xml = simplexml_load_string($result);
123
            //$jxml = json_encode($xml);
124
            $jxml = self::object2array($xml);
125
            $isxml = TRUE;
126
        }
127
        
128
        $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
129
        curl_close($ch);
130
        
131
        if (200==$code) {
132
            if ($isxml) {
133
                $json = $jxml;
134
            } else {
135
                $json = json_decode($result, true);
136
            }
137
            
138
            if (isset($json['errors'])) {
139
                throw new ApiError(implode(', ', $json['errors']));
140
            } else {
141
                return $json;
142
            }
143
        } elseif (409==$code) {
144
            throw new ApiError('Wrong API key');
145
        } else {
146
            throw new ApiError('Something wrong');
147
        }
148
    }
149
150
    /**
151
     * @param $object: JSON object
152
     */
153
    public static function object2array($object)
154
    {
155
        return @json_decode(@json_encode($object), 1);
156
    }
157
158
    
159
    /**
160
     * Prints on the screen main keys and values of the array 
161
     * @param $results: object to be printed on the screen.
162
     * @param $deepPrinting: if true, object will be printed recursively.
163
     */
164
    public static function simplePrint($results, $deepPrinting = null)
165
    {
166
        if (isset($results)) {
167
            if (is_array($results)) {
168
                foreach ($results as $key=>$result) {
169
                    if (is_array($result)) {
170
                        foreach ($result as $key1=>$result1) {
171
                            if (is_array($result1)) {
172
                                  if ($deepPrinting) {
173
                                      echo "<br>$key1 ------><br>";
174
                                      Route4Me::simplePrint($result1, true);
175
                                      echo "------<br>";
176
                                  } else {
177
                                      echo $key1." --> "."Array() <br>";
178
                                  } 
179 View Code Duplication
                            } else {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across 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...
180
                                if (is_object($result1)) {
181
                                    if ($deepPrinting) {
182
                                        echo "<br>$key1 ------><br>";
183
                                        $oarray = (array)$result1;
184
                                        Route4Me::simplePrint($oarray, true);
185
                                        echo "------<br>";
186
                                    } else {
187
                                        echo $key1." --> "."Object <br>";
188
                                    } 
189
                                } else {
190
                                    if (!is_null($result1)) {
191
                                        echo $key1." --> ".$result1."<br>"; 
192
                                    }   
193
                                }
194
                            }
195
                        }
196 View Code Duplication
                    } else {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across 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...
197
                        if (is_object($result)) {
198
                            if ($deepPrinting) {
199
                                echo "<br>$key ------><br>";
200
                                $oarray = (array)$result;
201
                                Route4Me::simplePrint($oarray, true);
202
                                echo "------<br>";
203
                            } else {
204
                                echo $key." --> "."Object <br>";
205
                            } 
206
                        } else {
207
                            if (!is_null($result)) {
208
                                echo $key." --> ".$result."<br>";
209
                            }
210
                        }
211
                        
212
                    }
213
                    //echo "<br>";
214
                }
215
            } 
216
        }
217
    }
218
219
    /**
220
     * Generates query or body parameters.
221
     * @param $allFields: all known fields could be used for parameters generation.
222
     * @param $params: input parameters (array or object)
223
     */
224
    public static function generateRequestParameters($allFields, $params)
225
    {
226
        $generatedParams = array();
227
        
228
        if (is_array($params)) {
229
            foreach ($allFields as $field) {
230
                if (isset($params[$field])) {
231
                    $generatedParams[$field] = $params[$field];
232
                }
233
            }
234 View Code Duplication
        } elseif (is_object($params)) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across 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...
235
            foreach ($allFields as $field) {
236
                if (isset($params->{$field})) {
237
                    $generatedParams[$field] = $params->{$field};
238
                }
239
            }
240
        }
241
242
        return $generatedParams;
243
    }
244
    
245
    /**
246
     * Returns an array of the object properties
247
     * @param $object: An object.
248
     * @param $exclude: array of the object parameters to be excluded from the returned array.
249
     */
250
    public static function getObjectProperties($object, $exclude)
251
    {
252
        $objectParameters = array();
253
        
254
        foreach (get_object_vars($object) as $key => $value) {
255
            if (property_exists($object, $key)) {
256
                if (!is_numeric(array_search($key, $exclude))) {
257
                    array_push($objectParameters, $key);
258
                }
259
            }
260
        }
261
        
262
        return $objectParameters;
263
    }
264
    
265
    /**
266
     * Returns url path generated from the array of the fields and parameters.
267
     * @param $allFields; array of the paossible fields (parameter names).
268
     * @param $params: input parameters (array or object).
269
     */
270
    public static function generateUrlPath($allFields, $params)
271
    {
272
        $generatedPath = "";
273
274
        if (is_array($params)) {
275
            foreach ($allFields as $field) {
276
                if (isset($params[$field])) {
277
                    $generatedPath .= $params[$field].'/';
278
                }
279
            }
280 View Code Duplication
        } elseif (is_object($params)) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across 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...
281
            foreach ($allFields as $field) {
282
                if (isset($params->{$field})) {
283
                    $generatedPath .= $params->{$field}.'/';
284
                }
285
            }
286
        }
287
        
288
        return $generatedPath;
289
    }
290
    
291
    public static function getFileRealPath($fileName)
292
    {
293
        $rpath = function_exists('curl_file_create') ? curl_file_create(realpath($fileName)) : '@'.realpath($fileName);
294
        
295
        return $rpath;
296
    }
297
}
298