Skip to content
This repository has been archived by the owner on Mar 23, 2020. It is now read-only.

Commit

Permalink
Merge pull request #207 from nathan-fiscaletti/v2.1.4
Browse files Browse the repository at this point in the history
V2.1.4
  • Loading branch information
Nathan Fiscaletti authored Sep 8, 2018
2 parents 2c52533 + d501dfb commit 1e3ae6c
Show file tree
Hide file tree
Showing 18 changed files with 275 additions and 22 deletions.
5 changes: 4 additions & 1 deletion config/RequestHandlers.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
"Synful\\App\\RequestHandlers\\PrivateHandlerExample",
"Synful\\App\\RequestHandlers\\RequestTypeExample",
"Synful\\App\\RequestHandlers\\SecurityLevelExample",
"Synful\\App\\RequestHandlers\\SerializerExample"
"Synful\\App\\RequestHandlers\\SerializerExample",
"Synful\\App\\RequestHandlers\\GetInputExample",
"Synful\\App\\RequestHandlers\\MiddlewareExample",
"Synful\\App\\RequestHandlers\\HeaderExample"
]
}
4 changes: 2 additions & 2 deletions src/Synful/App/MiddleWare/CustomHeaderExample.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class CustomHeaderExample implements MiddleWare
*/
public function before(Request $request, RequestHandler $handler)
{
$request->headers['CustomHeader'] = 'Custom Input Value';
$request->setHeader('Custom-Header', 'Custom Input Value');
}

/**
Expand All @@ -33,6 +33,6 @@ public function before(Request $request, RequestHandler $handler)
*/
public function after(Response $response)
{
$response->headers['CustomHeader'] = 'Custom Output Value';
$response->setHeader('Custom-Header', 'Custom Output Value');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use Synful\Util\Framework\RequestHandler;

/**
* New Request Handler Class.
* Class used to demonstrate URL fields.
*/
class AdvancedEndpointsExample extends RequestHandler
{
Expand Down
2 changes: 1 addition & 1 deletion src/Synful/App/RequestHandlers/GetIPExample.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use Synful\Util\Framework\RequestHandler;

/**
* New Request Handler Class.
* Class used to demonstrate retrieving an IP address from a Request.
*/
class GetIPExample extends RequestHandler
{
Expand Down
34 changes: 34 additions & 0 deletions src/Synful/App/RequestHandlers/GetInputExample.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

namespace Synful\App\RequestHandlers;

use Synful\Util\Framework\Request;
use Synful\Util\Framework\RequestHandler;

/**
* Class used to demonstrate retrieving input from a GET request.
*/
class GetInputExample extends RequestHandler
{
/**
* Override the handler endpoint
* Example: http://myapi.net/user/search
* uses the endpoint `user/search`.
*
* @var string
*/
public $endpoint = 'example/getinput';

/**
* Handles a GET request type.
*
* @param \Synful\Util\Framework\Request $request
* @return \Synful\Util\Framework\Response|array
*/
public function get(Request $request)
{
return [
'inputs' => $request->inputs(),
];
}
}
35 changes: 35 additions & 0 deletions src/Synful/App/RequestHandlers/HeaderExample.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

namespace Synful\App\RequestHandlers;

use Synful\Util\Framework\Request;
use Synful\Util\Framework\RequestHandler;

/**
* Class used to demonstrate retrieving an IP address from a Request.
*/
class HeaderExample extends RequestHandler
{
/**
* Override the handler endpoint
* Example: http://myapi.net/user/search
* uses the endpoint `user/search`.
*
* @var string
*/
public $endpoint = 'example/header';

/**
* Handles a GET request type.
*
* @param \Synful\Util\Framework\Request $request
* @return \Synful\Util\Framework\Response|array
*/
public function get(Request $request)
{
$response = sf_response(200, ['success' => true]);
$response->setHeader('Test', 'It Worked!');

return $response;
}
}
2 changes: 1 addition & 1 deletion src/Synful/App/RequestHandlers/HttpCodeExample.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use Synful\Util\Framework\RequestHandler;

/**
* New Request Handler Class.
* Class used to demonstrate HTTP codes.
*/
class HttpCodeExample extends RequestHandler
{
Expand Down
2 changes: 1 addition & 1 deletion src/Synful/App/RequestHandlers/InputExample.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use Synful\Util\Framework\RequestHandler;

/**
* New Request Handler Class.
* Class used to demonstrate data input.
*/
class InputExample extends RequestHandler
{
Expand Down
43 changes: 43 additions & 0 deletions src/Synful/App/RequestHandlers/MiddlewareExample.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

namespace Synful\App\RequestHandlers;

use Synful\Util\Framework\Request;
use Synful\Util\Framework\RequestHandler;

/**
* Class used to demonstrate retrieving an IP address from a Request.
*/
class MiddlewareExample extends RequestHandler
{
/**
* Override the handler endpoint
* Example: http://myapi.net/user/search
* uses the endpoint `user/search`.
*
* @var string
*/
public $endpoint = 'example/middleware';

/**
* Implement any middleware you'd like to apply here.
* The CustomHeaderExample will append a header to
* the output Response.
*
* @var array
*/
public $middleware = [
\Synful\App\MiddleWare\CustomHeaderExample::class,
];

/**
* Handles a GET request type.
*
* @param \Synful\Util\Framework\Request $request
* @return \Synful\Util\Framework\Response|array
*/
public function get(Request $request)
{
return [];
}
}
2 changes: 1 addition & 1 deletion src/Synful/App/RequestHandlers/SecurityLevelExample.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use Synful\Util\MiddleWare\APIKeyValidation;

/**
* New Request Handler Class.
* Class used to demonsrate security level.
*/
class SecurityLevelExample extends RequestHandler
{
Expand Down
2 changes: 1 addition & 1 deletion src/Synful/App/RequestHandlers/SerializerExample.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use Synful\Util\Framework\RequestHandler;

/**
* New Request Handler Class.
* Class used to demonstrate custom serializers.
*/
class SerializerExample extends RequestHandler
{
Expand Down
16 changes: 12 additions & 4 deletions src/Synful/Synful.php
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,11 @@ public static function handleRequest(

if (! empty($input)) {
try {
$data = $serializer->deserialize($input);
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$data = (new \Synful\Util\Serializers\URLSerializer)->deserialize($input);
} else {
$data = $serializer->deserialize($input);
}
} catch (\Exception $e) {
$response = (new SynfulException(500, -1, $e->getMessage()))->response;
sf_respond($response->code, $response->serialize());
Expand All @@ -214,7 +218,7 @@ public static function handleRequest(

$request = new Request([
'ip' => $ip,
'headers' => apache_request_headers(),
'headers' => sf_headers(),
'data' => $data,
'fields' => $fields,
'method' => $_SERVER['REQUEST_METHOD'],
Expand Down Expand Up @@ -293,13 +297,17 @@ public static function isCommandLineInterface()
}

/**
* Retrieve the current version of the framework.
* Retrieve the current version of the framework from git.
*
* @return string
*/
public static function version()
{
return 'v2.1.3';
if (! file_exists('.git')) {
return '*no-git* (dirty)';
}

return preg_replace('/\s+/', '', shell_exec('git describe --tag'));
}

/**
Expand Down
35 changes: 34 additions & 1 deletion src/Synful/Util/Framework/Request.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class Request
*
* @var array
*/
public $headers;
private $headers;

/**
* The authentication handle associated with the key of the client making the request.
Expand Down Expand Up @@ -124,4 +124,37 @@ public function inputs()
{
return $this->data;
}

/**
* Retrieve the value for a header.
*
* @param string $header
*
* @return string
*/
public function header(string $header)
{
return $this->headers[str_replace('-', '_', str_replace(' ', '_', strtolower($header)))];
}

/**
* Retrieve all headers for this Request.
*
* @return array
*/
public function headers()
{
return $this->headers;
}

/**
* Sets a header in the Request.
*
* @param string $header
* @param mixed $value
*/
public function setHeader(string $header, $value)
{
$this->headers[str_replace('-', '_', str_replace(' ', '_', strtolower($header)))] = $value;
}
}
31 changes: 29 additions & 2 deletions src/Synful/Util/Framework/Response.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class Response
*
* @var array
*/
public $headers = [];
private $headers = [];

/**
* The HTTP Response Code.
Expand Down Expand Up @@ -45,9 +45,36 @@ class Response
*/
public function setHeader(string $header, string $value)
{
$this->headers[$header] = $value;
$this->headers[str_replace('-', '_', str_replace(' ', '_', strtolower($header)))] = $value;
}

/**
* Retrieve the value for a header.
*
* @param string $header
*
* @return string
*/
public function header(string $header)
{
return $this->headers[str_replace('-', '_', str_replace(' ', '_', strtolower($header)))];
}

/**
* Retrieve all headers for this Response.
*
* @return array
*/
public function headers()
{
return $this->headers;
}

/**
* Sets the Serializer class to use with this Response.
*
* @param \Synful\Util\Framework\Serializer $serializer
*/
public function setSerializer(Serializer $serializer)
{
$this->serializer = $serializer;
Expand Down
19 changes: 19 additions & 0 deletions src/Synful/Util/Functions/System.php
Original file line number Diff line number Diff line change
Expand Up @@ -90,3 +90,22 @@ function sf_response(int $code = 200, $response = null)
]);
}
}

if (! function_exists('sf_headers')) {
/**
* Retrieve all headers from the System.
*
* @return array
*/
function sf_headers()
{
$headers = [];
foreach ($_SERVER as $k => $v) {
if (substr($k, 0, 5) == 'HTTP_') {
$headers[str_replace('-', '_', str_replace(' ', '_', strtolower(substr($k, 5))))] = $v;
}
}

return $headers;
}
}
8 changes: 4 additions & 4 deletions src/Synful/Util/MiddleWare/APIKeyValidation.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,17 @@ public function after(Response $response)
private function validateRequest(Request $request, RequestHandler $handler)
{
// Validate the Request Headers.
if (empty($request->headers['Synful-Auth'])) {
if (empty($request->header('Synful-Auth'))) {
throw new SynfulException(400, 1010);
}

if (empty($request->headers['Synful-Key'])) {
if (empty($request->header('Synful-Key'))) {
throw new SynfulException(400, 1009);
}

// Assign the user and key to the values of the request headers.
$user = $request->headers['Synful-Auth'];
$key = $request->headers['Synful-Key'];
$user = $request->header('Synful-Auth');
$key = $request->header('Synful-Key');

// Load the API Key
$api_key = APIKey::getApikey($user);
Expand Down
Loading

0 comments on commit 1e3ae6c

Please sign in to comment.