- Still WIP on Api's wrapper
This commit is contained in:
1 parent
7e69a09e7f
commit
5d9c0f0dbf
16 files changed
+548
-42
No files matched your search
@@ -3,12 +3,9 @@
|
||||
namespace Ulmus\Api\Transport;
|
||||
|
||||
use Ulmus\Api\Common\{ ContentTypeEnum, MethodEnum, HttpHeaderEnum };
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Ulmus\Api\Response\JsonResponse;
|
||||
use Ulmus\Api\Response\Response;
|
||||
use Ulmus\Api\Request\Stream;
|
||||
use Ulmus\Attribute\Obj\Method;
|
||||
use Ulmus\Api\Stream\Stream;
|
||||
use Psr\Http\Message\{ RequestInterface, ResponseInterface };
|
||||
use Ulmus\Api\Response\{ Response, JsonResponse };
|
||||
|
||||
abstract class CurlTransport {
|
||||
|
||||
@@ -52,16 +49,16 @@ abstract class CurlTransport {
|
||||
return $this->request(MethodEnum::Put, $url, $data, $headers, $curlOptions);
|
||||
}
|
||||
|
||||
public function fromRequest(ServerRequestInterface $request) : ResponseInterface
|
||||
public function fromRequest(RequestInterface $request) : ResponseInterface
|
||||
{
|
||||
return $this->request($request->getMethod(), $request->getUri(), $request->getBody()->getContents(), $request->getHeaders());
|
||||
return $this->request(MethodEnum::from($request->getMethod()), $request->getUri(), $request->getBody()->getContents(), $request->getHeaders());
|
||||
}
|
||||
|
||||
public function request(MethodEnum $method, string $url, mixed $data = null, array $headers = [], array $options = []) : ResponseInterface
|
||||
{
|
||||
$response = new Response();
|
||||
|
||||
$headers = HttpHeaderEnum::normalizeHeaderArray($headers + $this->headers);
|
||||
$headers = array_merge_recursive(HttpHeaderEnum::normalizeHeaderArray($headers), HttpHeaderEnum::normalizeHeaderArray($this->headers));
|
||||
|
||||
$options += $this->curlOptions;
|
||||
|
||||
@@ -83,6 +80,7 @@ abstract class CurlTransport {
|
||||
CURLOPT_HEADERFUNCTION => function($curl, $headerLine) use (& $response) {
|
||||
if ( strpos($headerLine, ':') ) {
|
||||
list($key, $value) = array_map('trim', explode(':', $headerLine));
|
||||
|
||||
$response = $response->withHeader($key, $value);
|
||||
}
|
||||
elseif ( strtoupper(substr($headerLine, 0, 4)) === 'HTTP' ) {
|
||||
@@ -145,7 +143,7 @@ abstract class CurlTransport {
|
||||
|
||||
switch($this->contentType) {
|
||||
case ContentTypeEnum::Json:
|
||||
$options[CURLOPT_POSTFIELDS] = json_encode($data, JsonResponse::DEFAULT_JSON_ENCODING_FLAGS);
|
||||
$options[CURLOPT_POSTFIELDS] = json_encode(is_string($data) && empty($data) ? new \stdClass() : $data, JsonResponse::DEFAULT_JSON_ENCODING_FLAGS);
|
||||
$headers['Accept'] ??= $this->contentType->value;
|
||||
break;
|
||||
|
||||
|
||||
Reference in new issue
Block a user