~xibo-maintainers/xibo/tempel

« back to all changes in this revision

Viewing changes to modules/3rdparty/forecast.php

  • Committer: Dan Garner
  • Date: 2015-06-19 15:50:58 UTC
  • mfrom: (428.1.46)
  • Revision ID: git-v1:2ab674ce7082f84b44bd480006860b88489aaa70
Merge pull request #69 from dasgarner/feature/playlists

Latest developments in the playlists/api branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?php
2
 
 
3
 
namespace Forecast;
4
 
 
5
 
class Forecast
6
 
{
7
 
    const API_ENDPOINT = 'https://api.forecast.io/forecast/';
8
 
    private $api_key;
9
 
 
10
 
    public function __construct($api_key)
11
 
    {
12
 
        $this->api_key = $api_key;
13
 
    }
14
 
 
15
 
    private function request($latitude, $longitude, $time = null, $options = array())
16
 
    {
17
 
        $request_url = self::API_ENDPOINT
18
 
            . '[APIKEY]'
19
 
            . '/'
20
 
            . $latitude
21
 
            . ','
22
 
            . $longitude
23
 
            . ((is_null($time)) ? '' : ','. $time);
24
 
 
25
 
        if (!empty($options)) {
26
 
            $request_url .= '?'. http_build_query($options);
27
 
        }
28
 
 
29
 
        \Xibo\Helper\Log::debug('Calling API with: ' . $request_url);
30
 
 
31
 
        $request_url = str_replace('[APIKEY]', $this->api_key, $request_url);
32
 
 
33
 
        $httpOptions = array(
34
 
            CURLOPT_TIMEOUT => 20,
35
 
            CURLOPT_SSL_VERIFYPEER => true,
36
 
            CURLOPT_USERAGENT => 'Xibo Digital Signage',
37
 
            CURLOPT_HEADER => false,
38
 
            CURLINFO_HEADER_OUT => true,
39
 
            CURLOPT_RETURNTRANSFER => true,
40
 
            CURLOPT_URL => $request_url
41
 
        );
42
 
 
43
 
        // Proxy support
44
 
        if (\Xibo\Helper\Config::GetSetting('PROXY_HOST') != '' && !\Xibo\Helper\Config::isProxyException($request_url)) {
45
 
            $httpOptions[CURLOPT_PROXY] = \Xibo\Helper\Config::GetSetting('PROXY_HOST');
46
 
            $httpOptions[CURLOPT_PROXYPORT] = \Xibo\Helper\Config::GetSetting('PROXY_PORT');
47
 
 
48
 
            if (\Xibo\Helper\Config::GetSetting('PROXY_AUTH') != '')
49
 
            $httpOptions[CURLOPT_PROXYUSERPWD] = \Xibo\Helper\Config::GetSetting('PROXY_AUTH');
50
 
        }
51
 
 
52
 
        $curl = curl_init();
53
 
        curl_setopt_array($curl, $httpOptions);
54
 
        $result = curl_exec($curl);
55
 
 
56
 
        // Get the response headers
57
 
        $outHeaders = curl_getinfo($curl);
58
 
 
59
 
        if ($outHeaders['http_code'] == 0) {
60
 
            // Unable to connect
61
 
            \Xibo\Helper\Log::error('Unable to reach Forecast API. No Host Found (HTTP Code 0). Curl Error = ' . curl_error($curl));
62
 
            return false;
63
 
        }
64
 
        else if ($outHeaders['http_code'] != 200) {
65
 
            \Xibo\Helper\Log::error('ForecastIO API returned ' . $outHeaders['http_code'] . ' status. Unable to proceed. Headers = ' . var_export($outHeaders, true));
66
 
 
67
 
            // See if we can parse the error.
68
 
            $body = json_decode($result);
69
 
 
70
 
            \Xibo\Helper\Log::error('ForecastIO Error: ' . ((isset($body->errors[0])) ? $body->errors[0]->message : 'Unknown Error'));
71
 
 
72
 
            return false;
73
 
        }
74
 
 
75
 
        // Parse out header and body
76
 
        $body = json_decode($result);
77
 
 
78
 
        return $body;
79
 
    }
80
 
 
81
 
    public function get($latitude, $longitude, $time = null, $options = array())
82
 
    {
83
 
        return $this->request($latitude, $longitude, $time, $options);
84
 
    }
85
 
}
 
 
b'\\ No newline at end of file'