Subiendo proyecto completo sin restricciones de git ignore
This commit is contained in:
217
vendor/facade/flare-client-php/src/Http/Client.php
vendored
Normal file
217
vendor/facade/flare-client-php/src/Http/Client.php
vendored
Normal file
@@ -0,0 +1,217 @@
|
||||
<?php
|
||||
|
||||
namespace Facade\FlareClient\Http;
|
||||
|
||||
use Facade\FlareClient\Http\Exceptions\BadResponseCode;
|
||||
use Facade\FlareClient\Http\Exceptions\InvalidData;
|
||||
use Facade\FlareClient\Http\Exceptions\MissingParameter;
|
||||
use Facade\FlareClient\Http\Exceptions\NotFound;
|
||||
|
||||
class Client
|
||||
{
|
||||
/** @var null|string */
|
||||
private $apiToken;
|
||||
|
||||
/** @var null|string */
|
||||
private $apiSecret;
|
||||
|
||||
/** @var string */
|
||||
private $baseUrl;
|
||||
|
||||
/** @var int */
|
||||
private $timeout;
|
||||
|
||||
public function __construct(
|
||||
?string $apiToken,
|
||||
?string $apiSecret,
|
||||
string $baseUrl = 'https://reporting.flareapp.io/api',
|
||||
int $timeout = 10
|
||||
) {
|
||||
$this->apiToken = $apiToken;
|
||||
|
||||
$this->apiSecret = $apiSecret;
|
||||
|
||||
if (! $baseUrl) {
|
||||
throw MissingParameter::create('baseUrl');
|
||||
}
|
||||
|
||||
$this->baseUrl = $baseUrl;
|
||||
|
||||
if (! $timeout) {
|
||||
throw MissingParameter::create('timeout');
|
||||
}
|
||||
|
||||
$this->timeout = $timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array $arguments
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function get(string $url, array $arguments = [])
|
||||
{
|
||||
return $this->makeRequest('get', $url, $arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array $arguments
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function post(string $url, array $arguments = [])
|
||||
{
|
||||
return $this->makeRequest('post', $url, $arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array $arguments
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function patch(string $url, array $arguments = [])
|
||||
{
|
||||
return $this->makeRequest('patch', $url, $arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
* @param array $arguments
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function put(string $url, array $arguments = [])
|
||||
{
|
||||
return $this->makeRequest('put', $url, $arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $method
|
||||
* @param array $arguments
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function delete(string $method, array $arguments = [])
|
||||
{
|
||||
return $this->makeRequest('delete', $method, $arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $httpVerb
|
||||
* @param string $url
|
||||
* @param array $arguments
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function makeRequest(string $httpVerb, string $url, array $arguments = [])
|
||||
{
|
||||
$queryString = http_build_query([
|
||||
'key' => $this->apiToken,
|
||||
'secret' => $this->apiSecret,
|
||||
]);
|
||||
|
||||
$fullUrl = "{$this->baseUrl}/{$url}?{$queryString}";
|
||||
|
||||
$headers = [
|
||||
'x-api-token: '.$this->apiToken,
|
||||
];
|
||||
|
||||
$response = $this->makeCurlRequest($httpVerb, $fullUrl, $headers, $arguments);
|
||||
|
||||
if ($response->getHttpResponseCode() === 422) {
|
||||
throw InvalidData::createForResponse($response);
|
||||
}
|
||||
|
||||
if ($response->getHttpResponseCode() === 404) {
|
||||
throw NotFound::createForResponse($response);
|
||||
}
|
||||
|
||||
if ($response->getHttpResponseCode() !== 200 && $response->getHttpResponseCode() !== 204) {
|
||||
throw BadResponseCode::createForResponse($response);
|
||||
}
|
||||
|
||||
return $response->getBody();
|
||||
}
|
||||
|
||||
public function makeCurlRequest(string $httpVerb, string $fullUrl, array $headers = [], array $arguments = []): Response
|
||||
{
|
||||
$curlHandle = $this->getCurlHandle($fullUrl, $headers);
|
||||
|
||||
switch ($httpVerb) {
|
||||
case 'post':
|
||||
curl_setopt($curlHandle, CURLOPT_POST, true);
|
||||
$this->attachRequestPayload($curlHandle, $arguments);
|
||||
|
||||
break;
|
||||
|
||||
case 'get':
|
||||
curl_setopt($curlHandle, CURLOPT_URL, $fullUrl.'&'.http_build_query($arguments));
|
||||
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
curl_setopt($curlHandle, CURLOPT_CUSTOMREQUEST, 'DELETE');
|
||||
|
||||
break;
|
||||
|
||||
case 'patch':
|
||||
curl_setopt($curlHandle, CURLOPT_CUSTOMREQUEST, 'PATCH');
|
||||
$this->attachRequestPayload($curlHandle, $arguments);
|
||||
|
||||
break;
|
||||
|
||||
case 'put':
|
||||
curl_setopt($curlHandle, CURLOPT_CUSTOMREQUEST, 'PUT');
|
||||
$this->attachRequestPayload($curlHandle, $arguments);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
$body = json_decode(curl_exec($curlHandle), true);
|
||||
$headers = curl_getinfo($curlHandle);
|
||||
$error = curl_error($curlHandle);
|
||||
|
||||
return new Response($headers, $body, $error);
|
||||
}
|
||||
|
||||
private function attachRequestPayload(&$curlHandle, array $data)
|
||||
{
|
||||
$encoded = json_encode($data);
|
||||
|
||||
$this->lastRequest['body'] = $encoded;
|
||||
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $encoded);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $fullUrl
|
||||
* @param array $headers
|
||||
*
|
||||
* @return resource
|
||||
*/
|
||||
private function getCurlHandle(string $fullUrl, array $headers = [])
|
||||
{
|
||||
$curlHandle = curl_init();
|
||||
|
||||
curl_setopt($curlHandle, CURLOPT_URL, $fullUrl);
|
||||
|
||||
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array_merge([
|
||||
'Accept: application/json',
|
||||
'Content-Type: application/json',
|
||||
], $headers));
|
||||
|
||||
curl_setopt($curlHandle, CURLOPT_USERAGENT, 'Laravel/Flare API 1.0');
|
||||
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($curlHandle, CURLOPT_TIMEOUT, $this->timeout);
|
||||
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, true);
|
||||
curl_setopt($curlHandle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
|
||||
curl_setopt($curlHandle, CURLOPT_ENCODING, '');
|
||||
curl_setopt($curlHandle, CURLINFO_HEADER_OUT, true);
|
||||
curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, true);
|
||||
curl_setopt($curlHandle, CURLOPT_MAXREDIRS, 1);
|
||||
|
||||
return $curlHandle;
|
||||
}
|
||||
}
|
||||
21
vendor/facade/flare-client-php/src/Http/Exceptions/BadResponse.php
vendored
Normal file
21
vendor/facade/flare-client-php/src/Http/Exceptions/BadResponse.php
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace Facade\FlareClient\Http\Exceptions;
|
||||
|
||||
use Exception;
|
||||
use Facade\FlareClient\Http\Response;
|
||||
|
||||
class BadResponse extends Exception
|
||||
{
|
||||
/** @var \Facade\FlareClient\Http\Response */
|
||||
public $response;
|
||||
|
||||
public static function createForResponse(Response $response)
|
||||
{
|
||||
$exception = new static("Could not perform request because: {$response->getError()}");
|
||||
|
||||
$exception->response = $response;
|
||||
|
||||
return $exception;
|
||||
}
|
||||
}
|
||||
33
vendor/facade/flare-client-php/src/Http/Exceptions/BadResponseCode.php
vendored
Normal file
33
vendor/facade/flare-client-php/src/Http/Exceptions/BadResponseCode.php
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace Facade\FlareClient\Http\Exceptions;
|
||||
|
||||
use Exception;
|
||||
use Facade\FlareClient\Http\Response;
|
||||
|
||||
class BadResponseCode extends Exception
|
||||
{
|
||||
/** @var \Facade\FlareClient\Http\Response */
|
||||
public $response;
|
||||
|
||||
/** @var array */
|
||||
public $errors;
|
||||
|
||||
public static function createForResponse(Response $response)
|
||||
{
|
||||
$exception = new static(static::getMessageForResponse($response));
|
||||
|
||||
$exception->response = $response;
|
||||
|
||||
$bodyErrors = isset($response->getBody()['errors']) ? $response->getBody()['errors'] : [];
|
||||
|
||||
$exception->errors = $bodyErrors;
|
||||
|
||||
return $exception;
|
||||
}
|
||||
|
||||
public static function getMessageForResponse(Response $response)
|
||||
{
|
||||
return "Response code {$response->getHttpResponseCode()} returned";
|
||||
}
|
||||
}
|
||||
13
vendor/facade/flare-client-php/src/Http/Exceptions/InvalidData.php
vendored
Normal file
13
vendor/facade/flare-client-php/src/Http/Exceptions/InvalidData.php
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace Facade\FlareClient\Http\Exceptions;
|
||||
|
||||
use Facade\FlareClient\Http\Response;
|
||||
|
||||
class InvalidData extends BadResponseCode
|
||||
{
|
||||
public static function getMessageForResponse(Response $response)
|
||||
{
|
||||
return 'Invalid data found';
|
||||
}
|
||||
}
|
||||
13
vendor/facade/flare-client-php/src/Http/Exceptions/MissingParameter.php
vendored
Normal file
13
vendor/facade/flare-client-php/src/Http/Exceptions/MissingParameter.php
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace Facade\FlareClient\Http\Exceptions;
|
||||
|
||||
use Exception;
|
||||
|
||||
class MissingParameter extends Exception
|
||||
{
|
||||
public static function create(string $parameterName)
|
||||
{
|
||||
return new static("`$parameterName` is a required parameter");
|
||||
}
|
||||
}
|
||||
13
vendor/facade/flare-client-php/src/Http/Exceptions/NotFound.php
vendored
Normal file
13
vendor/facade/flare-client-php/src/Http/Exceptions/NotFound.php
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace Facade\FlareClient\Http\Exceptions;
|
||||
|
||||
use Facade\FlareClient\Http\Response;
|
||||
|
||||
class NotFound extends BadResponseCode
|
||||
{
|
||||
public static function getMessageForResponse(Response $response)
|
||||
{
|
||||
return 'Not found';
|
||||
}
|
||||
}
|
||||
65
vendor/facade/flare-client-php/src/Http/Response.php
vendored
Normal file
65
vendor/facade/flare-client-php/src/Http/Response.php
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
namespace Facade\FlareClient\Http;
|
||||
|
||||
class Response
|
||||
{
|
||||
private $headers;
|
||||
|
||||
private $body;
|
||||
|
||||
private $error;
|
||||
|
||||
public function __construct($headers, $body, $error)
|
||||
{
|
||||
$this->headers = $headers;
|
||||
|
||||
$this->body = $body;
|
||||
|
||||
$this->error = $error;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getHeaders()
|
||||
{
|
||||
return $this->headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getBody()
|
||||
{
|
||||
return $this->body;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function hasBody()
|
||||
{
|
||||
return $this->body != false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getError()
|
||||
{
|
||||
return $this->error;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return null|int
|
||||
*/
|
||||
public function getHttpResponseCode()
|
||||
{
|
||||
if (! isset($this->headers['http_code'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
return (int) $this->headers['http_code'];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user