Passed
Push — dev ( 2d8d21...350c91 )
by Greg
02:20
created

Remote   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 66
rs 10
c 0
b 0
f 0
wmc 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getFileContCurl() 0 10 1
A getFileContents() 0 16 4
A getUriScheme() 0 16 3
A getFileContFopen() 0 5 1
A __construct() 0 3 1
1
<?php
2
namespace GJClasses;
3
4
class Remote
5
{
6
    public $log;
7
8
    public function __construct()
9
    {
10
        $this->log = new Log('class.remote');
11
    }
12
13
    public function getFileContents($file_title, $log_severity, $filename)
14
    {
15
        if (ini_get('allow_url_fopen') && extension_loaded('openssl')) {
16
17
            return $this->getFileContFopen($filename);
18
19
        } elseif (extension_loaded('curl')) {
20
21
            return $this->getFileContCurl($filename);
22
23
        } else {
24
25
            $log_message = 'Unable to get file contents';
26
            $log_extra = array('File Title' => $file_title, 'Filename' => $filename);
27
            $this->log->{$log_severity}($log_message, $log_extra);
28
            return $log_message;
29
30
        }
31
    }
32
33
    public function getFileContFopen($filename)
34
    {
35
        $scheme = $this->getUriScheme($filename);
36
        $context = stream_context_create(array($scheme => array('header' => 'Connection: close\r\n')));
37
        return file_get_contents($filename, false, $context);
38
    }
39
40
    public function getUriScheme($filename)
41
    {
42
        if (substr($filename, 0, 6) == 'https:') {
43
44
            return 'https';
45
46
        } elseif (substr($filename, 0, 5) == 'http:') {
47
48
            return 'http';
49
50
        } else {
51
52
            $log_message = 'Unable to determine URI scheme';
53
            $log_extra = array('Filename' => $filename);
54
            $this->log->critical($log_message, $log_extra);
55
            return $log_message;
56
57
        }
58
    }
59
60
    public function getFileContCurl($filename)
61
    {
62
        $handle = curl_init();
63
        curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
64
        curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false);
65
        curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
66
        curl_setopt($handle, CURLOPT_URL, $filename);
67
        $result = curl_exec($handle);
68
        curl_close($handle);
69
        return $result;
70
    }
71
}
72