object.php
3.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
/**
* @package Joomla.Platform
* @subpackage Openstreetmap
*
* @copyright Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die();
use Joomla\Registry\Registry;
/**
* Openstreetmap API object class for the Joomla Platform
*
* @since 3.2.0
* @deprecated 4.0 Use the `joomla/openstreetmap` package via Composer instead
*/
abstract class JOpenstreetmapObject
{
/**
* Options for the Openstreetmap object.
*
* @var Registry
* @since 3.2.0
*/
protected $options;
/**
* The HTTP client object to use in sending HTTP requests.
*
* @var JHttp
* @since 3.2.0
*/
protected $client;
/**
* The OAuth client.
*
* @var JOpenstreetmapOauth
* @since 3.2.0
*/
protected $oauth;
/**
* Constructor
*
* @param Registry &$options Openstreetmap options object.
* @param JHttp $client The HTTP client object.
* @param JOpenstreetmapOauth $oauth Openstreetmap oauth client
*
* @since 3.2.0
*/
public function __construct(Registry &$options = null, JHttp $client = null, JOpenstreetmapOauth $oauth = null)
{
$this->options = isset($options) ? $options : new Registry;
$this->client = isset($client) ? $client : new JHttp($this->options);
$this->oauth = $oauth;
}
/**
* Get an option from the JOpenstreetmapObject instance.
*
* @param string $key The name of the option to get.
*
* @return mixed The option value.
*
* @since 3.2.0
*/
public function getOption($key)
{
return $this->options->get($key);
}
/**
* Set an option for the JOpenstreetmapObject instance.
*
* @param string $key The name of the option to set.
* @param mixed $value The option value to set.
*
* @return JOpenstreetmapObject This object for method chaining.
*
* @since 3.2.0
*/
public function setOption($key, $value)
{
$this->options->set($key, $value);
return $this;
}
/**
* Method to send the request which does not require authentication.
*
* @param string $path The path of the request to make
* @param string $method The request method.
* @param array $headers The headers passed in the request.
* @param mixed $data Either an associative array or a string to be sent with the post request.
*
* @return SimpleXMLElement The XML response
*
* @since 3.2.0
* @throws DomainException
*/
public function sendRequest($path, $method = 'GET', $headers = array(), $data = '')
{
// Send the request.
switch ($method)
{
case 'GET':
$response = $this->client->get($path, $headers);
break;
case 'POST':
$response = $this->client->post($path, $data, $headers);
break;
}
// Validate the response code.
if ($response->code != 200)
{
$error = htmlspecialchars($response->body, ENT_COMPAT, 'UTF-8');
throw new DomainException($error, $response->code);
}
$xml_string = simplexml_load_string($response->body);
return $xml_string;
}
}