Curl   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 28
dl 0
loc 69
ccs 28
cts 28
cp 1
rs 10
c 0
b 0
f 0
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A fetchMultiUrl() 0 37 4
A fetchSingleUrl() 0 12 1
1
<?php
2
3
namespace Mahw17\Weather;
4
5
/**
6
 * cUrl methods to fetch information
7
 */
8
class Curl
9
{
10
    /**
11
     * Fetch information from single url
12
     *
13
     *
14
     * @param string $url that should be curled.
15
     *
16
     * @return string as the response.
17
     */
18 4
    public function fetchSingleUrl($url)
19
    {
20 4
        $chandle = curl_init();
21
22 4
        curl_setopt($chandle, CURLOPT_URL, $url);
23 4
        curl_setopt($chandle, CURLOPT_HEADER, 0);
24 4
        curl_setopt($chandle, CURLOPT_RETURNTRANSFER, 1);
25
26 4
        $result = curl_exec($chandle);
27 4
        curl_close($chandle);
28
29 4
        return $result;
30
    }
31
32
    /**
33
     * Fetch information from multiple url:s parallell
34
     *
35
     *
36
     * @param array $urlArray array with all urls that should be curled.
37
     *
38
     * @return array as the response.
39
     */
40 3
    public function fetchMultiUrl($urlArray)
41
    {
42
        // array of curl handles
43 3
        $multiCurl = array();
44
45
        // data to be returned
46 3
        $result = array();
47
48
        // multi handle
49 3
        $mhandle = curl_multi_init();
50
51 3
        $i = 0; //counter
52 3
        foreach ($urlArray as $url) {
53 3
            $multiCurl[$i] = curl_init();
54 3
            curl_setopt($multiCurl[$i], CURLOPT_URL, $url);
55 3
            curl_setopt($multiCurl[$i], CURLOPT_HEADER, 0);
56 3
            curl_setopt($multiCurl[$i], CURLOPT_RETURNTRANSFER, 1);
57 3
            curl_multi_add_handle($mhandle, $multiCurl[$i]);
58
59 3
            $i++;
60
        }
61
62 3
        $index = null;
63
64
        do {
65 3
            curl_multi_exec($mhandle, $index);
66 3
        } while ($index > 0);
67
68
        // get content and remove handles
69 3
        foreach ($multiCurl as $k => $chandle) {
70 3
            $result[$k] = json_decode(curl_multi_getcontent($chandle));
71 3
            curl_multi_remove_handle($mhandle, $chandle);
72
        }
73
        // close
74 3
        curl_multi_close($mhandle);
75
76 3
        return $result;
77
    }
78
}
79