first commit
This commit is contained in:
@@ -0,0 +1,446 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* LICENSE: Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* @category Microsoft
|
||||
* @package WindowsAzure\Common\Internal\Http
|
||||
* @author Azure PHP SDK <azurephpsdk@microsoft.com>
|
||||
* @copyright 2012 Microsoft Corporation
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @link https://github.com/windowsazure/azure-sdk-for-php
|
||||
*/
|
||||
|
||||
namespace WindowsAzure\Common\Internal\Http;
|
||||
use WindowsAzure\Common\Internal\Utilities;
|
||||
use WindowsAzure\Common\Internal\Resources;
|
||||
use WindowsAzure\Common\Internal\Validate;
|
||||
use WindowsAzure\Common\Internal\Http\Url;
|
||||
|
||||
/**
|
||||
* Holds basic elements for making HTTP call.
|
||||
*
|
||||
* @category Microsoft
|
||||
* @package WindowsAzure\Common\Internal\Http
|
||||
* @author Azure PHP SDK <azurephpsdk@microsoft.com>
|
||||
* @copyright 2012 Microsoft Corporation
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
|
||||
* @version Release: 0.4.1_2015-03
|
||||
* @link https://github.com/windowsazure/azure-sdk-for-php
|
||||
*/
|
||||
class HttpCallContext
|
||||
{
|
||||
/**
|
||||
* The HTTP method used to make this call.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $_method;
|
||||
|
||||
/**
|
||||
* HTTP request headers.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $_headers;
|
||||
|
||||
/**
|
||||
* The URI query parameters.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $_queryParams;
|
||||
|
||||
/**
|
||||
* The HTTP POST parameters.
|
||||
*
|
||||
* @var array.
|
||||
*/
|
||||
private $_postParameters;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $_uri;
|
||||
|
||||
/**
|
||||
* The URI path.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $_path;
|
||||
|
||||
/**
|
||||
* The expected status codes.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $_statusCodes;
|
||||
|
||||
/**
|
||||
* The HTTP request body.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $_body;
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->_method = null;
|
||||
$this->_body = null;
|
||||
$this->_path = null;
|
||||
$this->_uri = null;
|
||||
$this->_queryParams = array();
|
||||
$this->_postParameters = array();
|
||||
$this->_statusCodes = array();
|
||||
$this->_headers = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets method.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMethod()
|
||||
{
|
||||
return $this->_method;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets method.
|
||||
*
|
||||
* @param string $method The method value.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function setMethod($method)
|
||||
{
|
||||
Validate::isString($method, 'method');
|
||||
|
||||
$this->_method = $method;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets headers.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getHeaders()
|
||||
{
|
||||
return $this->_headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets headers.
|
||||
*
|
||||
* Ignores the header if its value is empty.
|
||||
*
|
||||
* @param array $headers The headers value.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function setHeaders($headers)
|
||||
{
|
||||
$this->_headers = array();
|
||||
foreach ($headers as $key => $value) {
|
||||
$this->addHeader($key, $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets queryParams.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getQueryParameters()
|
||||
{
|
||||
return $this->_queryParams;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets queryParams.
|
||||
*
|
||||
* Ignores the query variable if its value is empty.
|
||||
*
|
||||
* @param array $queryParams The queryParams value.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function setQueryParameters($queryParams)
|
||||
{
|
||||
$this->_queryParams = array();
|
||||
foreach ($queryParams as $key => $value) {
|
||||
$this->addQueryParameter($key, $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets uri.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUri()
|
||||
{
|
||||
return $this->_uri;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets uri.
|
||||
*
|
||||
* @param string $uri The uri value.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function setUri($uri)
|
||||
{
|
||||
Validate::isString($uri, 'uri');
|
||||
|
||||
$this->_uri = $uri;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets path.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPath()
|
||||
{
|
||||
return $this->_path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets path.
|
||||
*
|
||||
* @param string $path The path value.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function setPath($path)
|
||||
{
|
||||
Validate::isString($path, 'path');
|
||||
|
||||
$this->_path = $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets statusCodes.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getStatusCodes()
|
||||
{
|
||||
return $this->_statusCodes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets statusCodes.
|
||||
*
|
||||
* @param array $statusCodes The statusCodes value.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function setStatusCodes($statusCodes)
|
||||
{
|
||||
$this->_statusCodes = array();
|
||||
foreach ($statusCodes as $value) {
|
||||
$this->addStatusCode($value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets body.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getBody()
|
||||
{
|
||||
return $this->_body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets body.
|
||||
*
|
||||
* @param string $body The body value.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function setBody($body)
|
||||
{
|
||||
Validate::isString($body, 'body');
|
||||
|
||||
$this->_body = $body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds or sets header pair.
|
||||
*
|
||||
* @param string $name The HTTP header name.
|
||||
* @param string $value The HTTP header value.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function addHeader($name, $value)
|
||||
{
|
||||
Validate::isString($name, 'name');
|
||||
Validate::isString($value, 'value');
|
||||
|
||||
$this->_headers[$name] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds or sets header pair.
|
||||
*
|
||||
* Ignores header if it's value satisfies empty().
|
||||
*
|
||||
* @param string $name The HTTP header name.
|
||||
* @param string $value The HTTP header value.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function addOptionalHeader($name, $value)
|
||||
{
|
||||
Validate::isString($name, 'name');
|
||||
Validate::isString($value, 'value');
|
||||
|
||||
if (!empty($value)) {
|
||||
$this->_headers[$name] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes header from the HTTP request headers.
|
||||
*
|
||||
* @param string $name The HTTP header name.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function removeHeader($name)
|
||||
{
|
||||
Validate::isString($name, 'name');
|
||||
Validate::notNullOrEmpty($name, 'name');
|
||||
|
||||
unset($this->_headers[$name]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds or sets query parameter pair.
|
||||
*
|
||||
* @param string $name The URI query parameter name.
|
||||
* @param string $value The URI query parameter value.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function addQueryParameter($name, $value)
|
||||
{
|
||||
Validate::isString($name, 'name');
|
||||
Validate::isString($value, 'value');
|
||||
|
||||
$this->_queryParams[$name] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets HTTP POST parameters.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getPostParameters()
|
||||
{
|
||||
return $this->_postParameters;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets HTTP POST parameters.
|
||||
*
|
||||
* @param array $postParameters The HTTP POST parameters.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function setPostParameters($postParameters)
|
||||
{
|
||||
Validate::isArray($postParameters, 'postParameters');
|
||||
$this->_postParameters = $postParameters;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds or sets query parameter pair.
|
||||
*
|
||||
* Ignores query parameter if it's value satisfies empty().
|
||||
*
|
||||
* @param string $name The URI query parameter name.
|
||||
* @param string $value The URI query parameter value.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function addOptionalQueryParameter($name, $value)
|
||||
{
|
||||
Validate::isString($name, 'name');
|
||||
Validate::isString($value, 'value');
|
||||
|
||||
if (!empty($value)) {
|
||||
$this->_queryParams[$name] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds status code to the expected status codes.
|
||||
*
|
||||
* @param integer $statusCode The expected status code.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
public function addStatusCode($statusCode)
|
||||
{
|
||||
Validate::isInteger($statusCode, 'statusCode');
|
||||
|
||||
$this->_statusCodes[] = $statusCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets header value.
|
||||
*
|
||||
* @param string $name The header name.
|
||||
*
|
||||
* @return mix
|
||||
*/
|
||||
public function getHeader($name)
|
||||
{
|
||||
return Utilities::tryGetValue($this->_headers, $name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts the context object to string.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
$headers = Resources::EMPTY_STRING;
|
||||
$uri = new Url($this->_uri);
|
||||
$uri = $uri->getUrl();
|
||||
|
||||
foreach ($this->_headers as $key => $value) {
|
||||
$headers .= "$key: $value\n";
|
||||
}
|
||||
|
||||
$str = "$this->_method $uri$this->_path HTTP/1.1\n$headers\n";
|
||||
$str .= "$this->_body";
|
||||
|
||||
return $str;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user