Uri and request fixes

Making uri a request parameter. Uri can be more easily initialized by passing uri as constructor parameter
This commit is contained in:
Dennis Eichhorn 2016-02-04 18:40:27 +01:00
parent f501f1d793
commit e7f2e1d71c
6 changed files with 85 additions and 90 deletions

View File

@ -16,12 +16,10 @@
namespace phpOMS\Message\Http; namespace phpOMS\Message\Http;
use phpOMS\Localization\Localization; use phpOMS\Localization\Localization;
use phpOMS\Message\RequestAbstract; use phpOMS\Message\RequestAbstract;
use phpOMS\Message\RequestMethod;
use phpOMS\Uri\Http; use phpOMS\Uri\Http;
use phpOMS\Uri\UriFactory; use phpOMS\Uri\UriFactory;
use phpOMS\Uri\UriInterface;
/** /**
* Request class. * Request class.
@ -80,16 +78,15 @@ class Request extends RequestAbstract
/** /**
* Constructor. * Constructor.
* *
* @param string $rootPath relative installation path * @param UriInterface $uri Uri
* *
* @since 1.0.0 * @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com> * @author Dennis Eichhorn <d.eichhorn@oms.com>
*/ */
public function __construct(string $rootPath) public function __construct(UriInterface $uri)
{ {
$this->uri = new Http($rootPath); $this->uri = $uri;
$this->l11n = new Localization(); $this->l11n = new Localization();
UriFactory::setQuery('/root', $rootPath);
} }
/** /**
@ -97,7 +94,7 @@ class Request extends RequestAbstract
* *
* This is used in order to either initialize the current http request or a batch of GET requests * This is used in order to either initialize the current http request or a batch of GET requests
* *
* @param string $uri URL * @param mixed $uri URL
* *
* @return void * @return void
* *
@ -106,7 +103,7 @@ class Request extends RequestAbstract
* @since 1.0.0 * @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com> * @author Dennis Eichhorn <d.eichhorn@oms.com>
*/ */
public function init(string $uri = null) public function init($uri = null)
{ {
if ($uri === null) { if ($uri === null) {
$this->data = $_GET ?? []; $this->data = $_GET ?? [];
@ -128,7 +125,7 @@ class Request extends RequestAbstract
$this->uri->set(Http::getCurrent()); $this->uri->set(Http::getCurrent());
} else { } else {
$this->setMethod($uri['type']); // TODO: is this correct? $this->setMethod($uri['type']);
$this->uri->set($uri['uri']); $this->uri->set($uri['uri']);
} }
@ -177,21 +174,6 @@ class Request extends RequestAbstract
return false; return false;
} }
/**
* Set request type.
*
* @param RequestMethod $type Request type
*
* @return void
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setMethod(RequestMethod $type)
{
$this->type = $type;
}
/** /**
* Generate request hash. * Generate request hash.
* *
@ -338,11 +320,11 @@ class Request extends RequestAbstract
*/ */
public function getMethod() : string public function getMethod() : string
{ {
if (!isset($this->type)) { if (!isset($this->method)) {
$this->type = $_SERVER['REQUEST_METHOD']; $this->method = $_SERVER['REQUEST_METHOD'];
} }
return $this->type; return $this->method;
} }
/** /**

View File

@ -15,9 +15,7 @@
*/ */
namespace phpOMS\Message\Http; namespace phpOMS\Message\Http;
use phpOMS\Datatypes\Exception\InvalidEnumValue;
use phpOMS\Message\RequestMethod; use phpOMS\Message\RequestMethod;
use phpOMS\Uri\InvalidUriException;
/** /**
* Rest request class. * Rest request class.
@ -35,49 +33,21 @@ class Rest
/** /**
* Url. * Url.
* *
* @var string * @var Request
* @since 1.0.0 * @since 1.0.0
*/ */
private $url = ''; private $request = '';
/**
* Method.
*
* @var string
* @since 1.0.0
*/
private $method = RequestMethod::POST;
/** /**
* Set url. * Set url.
* *
* @param string $url Url * @param Request $request Request
* *
* @since 1.0.0 * @since 1.0.0
* @author Dennis Eichhorn * @author Dennis Eichhorn
*/ */
public function setUrl(string $url) { public function setRequest(Request $request) {
if (filter_var($url, FILTER_VALIDATE_URL) === false) { $this->request = $request;
throw new InvalidUriException('$url');
}
$this->url = $url;
}
/**
* Set method.
*
* @param string $method Method
*
* @since 1.0.0
* @author Dennis Eichhorn
*/
public function setMethod(string $method) {
if(!RequestMethod::isValidValue($method)) {
throw new InvalidEnumValue($method);
}
$this->method = $method;
} }
/** /**
@ -94,7 +64,7 @@ class Rest
{ {
$curl = curl_init(); $curl = curl_init();
switch ($this->method) { switch ($this->request->getMethod()) {
case RequestMethod::POST: case RequestMethod::POST:
curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POST, 1);
@ -105,16 +75,12 @@ class Rest
case RequestMethod::PUT: case RequestMethod::PUT:
curl_setopt($curl, CURLOPT_PUT, 1); curl_setopt($curl, CURLOPT_PUT, 1);
break; break;
default:
if ($data) {
$this->url = sprintf("%s?%s", $this->url, http_build_query($data));
}
} }
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password"); curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_URL, $this->url); curl_setopt($curl, CURLOPT_URL, $this->request->getUri()->__toString());
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl); $result = curl_exec($curl);

View File

@ -44,12 +44,20 @@ abstract class RequestAbstract implements RequestInterface
protected $uri = null; protected $uri = null;
/** /**
* Request type. * Request method.
* *
* @var \phpOMS\Message\RequestMethod * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected $type = null; protected $method = null;
/**
* Root.
*
* @var string
* @since 1.0.0
*/
protected $rootPath = null;
/** /**
* Request data. * Request data.
@ -125,6 +133,14 @@ abstract class RequestAbstract implements RequestInterface
return $this->uri; return $this->uri;
} }
/**
* {@inheritdoc}
*/
public function setUri(UriInterface $uri)
{
return $this->uri = $uri;
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
@ -158,6 +174,13 @@ abstract class RequestAbstract implements RequestInterface
*/ */
abstract public function getMethod() : string; abstract public function getMethod() : string;
/**
* {@inheritdoc}
*/
public function setMethod(string $method) {
$this->method = $method;
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */

View File

@ -51,6 +51,16 @@ interface RequestInterface extends MessageInterface
*/ */
public function getMethod() : string; public function getMethod() : string;
/**
* Set request method.
*
* @param string $method
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setMethod(string $method);
/** /**
* Get request uri. * Get request uri.
* *
@ -61,10 +71,20 @@ interface RequestInterface extends MessageInterface
*/ */
public function getUri() : UriInterface; public function getUri() : UriInterface;
/**
* Set request uri.
*
* @param UriInterface $uri
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function setUri(UriInterface $uri);
/** /**
* Get request hash. * Get request hash.
* *
* @return string * @return array
* *
* @since 1.0.0 * @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com> * @author Dennis Eichhorn <d.eichhorn@oms.com>

View File

@ -124,14 +124,22 @@ class Http implements UriInterface
/** /**
* Constructor. * Constructor.
* *
* @param string $rootPath Root path for subdirectory * @param string $uri Root path for subdirectory
* *
* @since 1.0.0 * @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com> * @author Dennis Eichhorn <d.eichhorn@oms.com>
*/ */
public function __construct(string $rootPath) public function __construct(string $uri)
{ {
$this->rootPath = $rootPath; $this->set($uri);
}
/**
* {@inheritdoc}
*/
public function setRootPath(string $root)
{
return $this->rootPath = $root;
} }
/** /**
@ -310,13 +318,6 @@ class Http implements UriInterface
$this->base = $this->scheme . '://' . $this->host . $this->rootPath; $this->base = $this->scheme . '://' . $this->host . $this->rootPath;
} }
/**
* {@inheritdoc}
*/
public function parse($uri)
{
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
@ -325,13 +326,6 @@ class Http implements UriInterface
return $this->uri; return $this->uri;
} }
/**
* {@inheritdoc}
*/
public function resolve($base)
{
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */

View File

@ -41,6 +41,16 @@ interface UriInterface
*/ */
public static function isValid(string $uri) : bool; public static function isValid(string $uri) : bool;
/**
* Set uri
*
* @param string $uri Uri string
*
* @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com>
*/
public function set(string $uri);
/** /**
* Get scheme. * Get scheme.
* *