Skip to content

Commit

Permalink
remove hydration setting and always hydrate
Browse files Browse the repository at this point in the history
  • Loading branch information
Naoray committed Dec 17, 2024
1 parent a3a67a8 commit 983595a
Show file tree
Hide file tree
Showing 270 changed files with 1,105 additions and 1,377 deletions.
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
## Specifications

- API Version:
- API Version:
- SDK Version:

## Describe the issue

...

1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
"brianium/paratest": "^6.11",
"friendsofphp/php-cs-fixer": "^3.39",
"guzzlehttp/guzzle": "^7.6",
"laravel/pint": "^1.18",
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^9.6"
},
Expand Down
2 changes: 1 addition & 1 deletion src/Contracts/Connector.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use Mollie\Api\Http\Middleware;
use Mollie\Api\Http\Request;

interface Connector extends Authenticatable, Hydratable, IdempotencyContract, SupportsDebuggingContract, Testable
interface Connector extends Authenticatable, IdempotencyContract, SupportsDebuggingContract, Testable
{
public function send(Request $request): ?object;

Expand Down
2 changes: 1 addition & 1 deletion src/Contracts/HasResponse.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@

interface HasResponse extends ViableResponse
{
public function getResponse(): ?Response;
public function getResponse(): Response;
}
15 changes: 0 additions & 15 deletions src/Contracts/Hydratable.php

This file was deleted.

4 changes: 4 additions & 0 deletions src/Contracts/PayloadRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ public function remove(string $key): self;

public function add(string $key, $value): self;

public function get(string $key, $default = null): mixed;

public function merge(array ...$arrays): self;

public function isEmpty(): bool;

public function isNotEmpty(): bool;
Expand Down
13 changes: 13 additions & 0 deletions src/Contracts/RequestMiddleware.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace Mollie\Api\Contracts;

use Mollie\Api\Http\PendingRequest;

interface RequestMiddleware
{
/**
* @return PendingRequest|void
*/
public function __invoke(PendingRequest $pendingRequest);
}
14 changes: 14 additions & 0 deletions src/Contracts/ResponseMiddleware.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace Mollie\Api\Contracts;

use Mollie\Api\Http\Response;
use Mollie\Api\Http\ViableResponse;

interface ResponseMiddleware
{
/**
* @return Response|ViableResponse|mixed|void
*/
public function __invoke(Response $response);
}
12 changes: 0 additions & 12 deletions src/Contracts/SupportsResourceHydration.php

This file was deleted.

5 changes: 0 additions & 5 deletions src/EndpointCollection/EndpointCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,6 @@ abstract class EndpointCollection
public function __construct(Connector $connector)
{
$this->connector = $connector;

/**
* Default hydration decision to true to maintain legacy compatibility.
*/
$connector::setAutoHydrate();
}

/**
Expand Down
8 changes: 6 additions & 2 deletions src/EndpointCollection/ProfileEndpointCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,14 @@ public function get(string $profileId, $testmode = []): Profile
*/
public function getCurrent($testmode = []): CurrentProfile
{
GetProfileRequest::$targetResourceClass = CurrentProfile::class;
$testmode = Utility::extractBool($testmode, 'testmode', false);

/** @var CurrentProfile */
return $this->get('me', $testmode);
return $this->send(
(new GetProfileRequest('me'))
->setHydratableResource(CurrentProfile::class)
->test($testmode)
);
}

/**
Expand Down
3 changes: 2 additions & 1 deletion src/Http/Middleware/ApplyIdempotencyKey.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@

namespace Mollie\Api\Http\Middleware;

use Mollie\Api\Contracts\RequestMiddleware;
use Mollie\Api\Http\PendingRequest;
use Mollie\Api\Types\Method;

class ApplyIdempotencyKey
class ApplyIdempotencyKey implements RequestMiddleware
{
const IDEMPOTENCY_KEY_HEADER = 'Idempotency-Key';

Expand Down
13 changes: 0 additions & 13 deletions src/Http/Middleware/EvaluateHydrationSetting.php

This file was deleted.

5 changes: 3 additions & 2 deletions src/Http/Middleware/GuardResponse.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@

namespace Mollie\Api\Http\Middleware;

use Mollie\Api\Contracts\ResponseMiddleware;
use Mollie\Api\Exceptions\ApiException;
use Mollie\Api\Http\Response;
use Mollie\Api\Http\ResponseStatusCode;

class GuardResponse
class GuardResponse implements ResponseMiddleware
{
public function __invoke(Response $response)
public function __invoke(Response $response): void
{
if (($isEmpty = $response->isEmpty()) && $response->status() !== ResponseStatusCode::HTTP_NO_CONTENT) {
throw new ApiException('No response body found.');
Expand Down
23 changes: 0 additions & 23 deletions src/Http/Middleware/Hydrate.php

This file was deleted.

3 changes: 2 additions & 1 deletion src/Http/Middleware/ResetIdempotencyKey.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

namespace Mollie\Api\Http\Middleware;

use Mollie\Api\Contracts\ResponseMiddleware;
use Mollie\Api\Http\Response;

class ResetIdempotencyKey
class ResetIdempotencyKey implements ResponseMiddleware
{
public function __invoke(Response $response): void
{
Expand Down
5 changes: 3 additions & 2 deletions src/Http/Middleware/ThrowExceptionIfRequestFailed.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@

namespace Mollie\Api\Http\Middleware;

use Mollie\Api\Contracts\ResponseMiddleware;
use Mollie\Api\Exceptions\ApiException;
use Mollie\Api\Http\Response;

class ThrowExceptionIfRequestFailed
class ThrowExceptionIfRequestFailed implements ResponseMiddleware
{
public function __invoke(Response $response)
public function __invoke(Response $response): void
{
if ($response->successful()) {
return;
Expand Down
17 changes: 12 additions & 5 deletions src/Http/PendingRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@
use Mollie\Api\Contracts\SupportsTestmodeInPayload;
use Mollie\Api\Contracts\SupportsTestmodeInQuery;
use Mollie\Api\Http\Middleware\ApplyIdempotencyKey;
use Mollie\Api\Http\Middleware\EvaluateHydrationSetting;
use Mollie\Api\Http\Middleware\GuardResponse;
use Mollie\Api\Http\Middleware\Hydrate;
use Mollie\Api\Http\Middleware\MiddlewarePriority;
use Mollie\Api\Http\Middleware\ResetIdempotencyKey;
use Mollie\Api\Http\Middleware\ThrowExceptionIfRequestFailed;
Expand Down Expand Up @@ -68,14 +66,12 @@ public function __construct(Connector $connector, Request $request)
->middleware()

/** On request */
->onRequest(new EvaluateHydrationSetting, 'hydration')
->onRequest(new ApplyIdempotencyKey, 'idempotency')

/** On response */
->onResponse(new ResetIdempotencyKey, 'idempotency')
->onResponse(new GuardResponse, MiddlewarePriority::HIGH)
->onResponse(new ThrowExceptionIfRequestFailed, MiddlewarePriority::HIGH)
->onResponse(new Hydrate, 'hydration', MiddlewarePriority::LOW);
->onResponse(new ThrowExceptionIfRequestFailed, MiddlewarePriority::HIGH);
}

public function setTestmode(bool $testmode): self
Expand All @@ -89,6 +85,17 @@ public function setTestmode(bool $testmode): self
return $this;
}

public function getTestmode(): bool
{
if (! $this->request instanceof SupportsTestmodeInQuery && ! $this->request instanceof SupportsTestmodeInPayload) {
return false;
}

return $this->request instanceof SupportsTestmodeInQuery
? $this->query()->get('testmode', false)
: $this->payload()->get('testmode', false);
}

public function setPayload(PayloadRepository $bodyRepository): self
{
$this->payload = $bodyRepository;
Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/ApplePayPaymentSessionRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class ApplePayPaymentSessionRequest extends ResourceHydratableRequest implements

protected static string $method = Method::POST;

public static string $targetResourceClass = AnyResource::class;
protected $hydratableResource = AnyResource::class;

private RequestApplePayPaymentSessionPayload $payload;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CancelPaymentRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class CancelPaymentRequest extends ResourceHydratableRequest implements Supports
{
protected static string $method = Method::DELETE;

public static string $targetResourceClass = Payment::class;
protected $hydratableResource = Payment::class;

protected string $id;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CancelSessionRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class CancelSessionRequest extends ResourceHydratableRequest
{
protected static string $method = Method::DELETE;

public static string $targetResourceClass = Session::class;
protected $hydratableResource = Session::class;

private string $sessionId;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CancelSubscriptionRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class CancelSubscriptionRequest extends ResourceHydratableRequest implements Sup
/**
* The resource class the request should be casted to.
*/
public static string $targetResourceClass = Subscription::class;
protected $hydratableResource = Subscription::class;

private string $customerId;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CreateClientLinkRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class CreateClientLinkRequest extends ResourceHydratableRequest implements HasPa
/**
* The resource class the request should be casted to.
*/
public static string $targetResourceClass = ClientLink::class;
protected $hydratableResource = ClientLink::class;

private CreateClientLinkPayload $payload;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CreateCustomerRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class CreateCustomerRequest extends ResourceHydratableRequest implements HasPayl

protected static string $method = Method::POST;

public static string $targetResourceClass = Customer::class;
protected $hydratableResource = Customer::class;

private CreateCustomerPayload $payload;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CreateMandateRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class CreateMandateRequest extends ResourceHydratableRequest implements HasPaylo
/**
* The resource class the request should be casted to.
*/
public static string $targetResourceClass = Mandate::class;
protected $hydratableResource = Mandate::class;

private string $customerId;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CreatePaymentCaptureRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class CreatePaymentCaptureRequest extends ResourceHydratableRequest implements H
/**
* The resource class the request should be casted to.
*/
public static string $targetResourceClass = Capture::class;
protected $hydratableResource = Capture::class;

private string $paymentId;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CreatePaymentLinkRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class CreatePaymentLinkRequest extends ResourceHydratableRequest implements HasP
/**
* The resource class the request should be casted to.
*/
public static string $targetResourceClass = PaymentLink::class;
protected $hydratableResource = PaymentLink::class;

private CreatePaymentLinkPayload $payload;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CreatePaymentRefundRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class CreatePaymentRefundRequest extends ResourceHydratableRequest implements Ha
/**
* The resource class the request should be casted to.
*/
public static string $targetResourceClass = \Mollie\Api\Resources\Refund::class;
protected $hydratableResource = \Mollie\Api\Resources\Refund::class;

private string $paymentId;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CreatePaymentRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class CreatePaymentRequest extends ResourceHydratableRequest implements HasPaylo
/**
* The resource class the request should be casted to.
*/
public static string $targetResourceClass = Payment::class;
protected $hydratableResource = Payment::class;

private CreatePaymentPayload $payload;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CreateProfileRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class CreateProfileRequest extends ResourceHydratableRequest implements HasPaylo
/**
* The resource class the request should be casted to.
*/
public static string $targetResourceClass = Profile::class;
protected $hydratableResource = Profile::class;

private CreateProfilePayload $payload;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CreateSalesInvoiceRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class CreateSalesInvoiceRequest extends ResourceHydratableRequest implements Has

protected static string $method = Method::POST;

public static string $targetResourceClass = SalesInvoice::class;
protected $hydratableResource = SalesInvoice::class;

private CreateSalesInvoicePayload $payload;

Expand Down
2 changes: 1 addition & 1 deletion src/Http/Requests/CreateSessionRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class CreateSessionRequest extends ResourceHydratableRequest implements HasPaylo

protected static string $method = Method::POST;

public static string $targetResourceClass = Session::class;
protected $hydratableResource = Session::class;

private AnyData $payload;

Expand Down
Loading

0 comments on commit 983595a

Please sign in to comment.