diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index a37770f6..e07eff53 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,7 +1,7 @@ parameters: ignoreErrors: - - message: '#^Call to an undefined method GuzzleHttp\\Promise\\PromiseInterface\|Saloon\\Http\\Response\:\:then\(\)\.$#' + message: '#^Call to an undefined method GuzzleHttp\\Promise\\PromiseInterface\|Saloon\\Http\\Response\\:\:then\(\)\.$#' identifier: method.notFound count: 1 path: src/Http/Connector.php @@ -25,7 +25,7 @@ parameters: path: src/Http/Connector.php - - message: '#^Parameter \#1 \$response of method Saloon\\Http\\PendingRequest\:\:executeResponsePipeline\(\) expects Saloon\\Http\\Response, GuzzleHttp\\Promise\\PromiseInterface\|Saloon\\Http\\Response given\.$#' + message: '#^Parameter \#1 \$response of method Saloon\\Http\\PendingRequest\:\:executeResponsePipeline\(\) expects Saloon\\Http\\Response\, GuzzleHttp\\Promise\\PromiseInterface\|Saloon\\Http\\Response\ given\.$#' identifier: argument.type count: 1 path: src/Http/Connector.php @@ -37,19 +37,19 @@ parameters: path: src/Http/Faking/Fixture.php - - message: '#^Method Saloon\\Http\\Faking\\MockClient\:\:getLastResponse\(\) should return Saloon\\Http\\Response\|null but returns \(callable\)\|Saloon\\Http\\Faking\\Fixture\|Saloon\\Http\\Faking\\MockResponse\.$#' + message: '#^Method Saloon\\Http\\Faking\\MockClient\:\:getLastResponse\(\) should return Saloon\\Http\\Response\\|null but returns \(callable\(\)\: mixed\)\|Saloon\\Http\\Faking\\Fixture\|Saloon\\Http\\Faking\\MockResponse\.$#' identifier: return.type count: 1 path: src/Http/Faking/MockClient.php - - message: '#^Method Saloon\\Http\\Faking\\MockClient\:\:getRecordedResponses\(\) should return array\ but returns array\<\(callable\)\|Saloon\\Http\\Faking\\Fixture\|Saloon\\Http\\Faking\\MockResponse\>\.$#' + message: '#^Method Saloon\\Http\\Faking\\MockClient\:\:getRecordedResponses\(\) should return array\\> but returns array\<\(callable\(\)\: mixed\)\|Saloon\\Http\\Faking\\Fixture\|Saloon\\Http\\Faking\\MockResponse\>\.$#' identifier: return.type count: 1 path: src/Http/Faking/MockClient.php - - message: '#^Property Saloon\\Http\\Faking\\MockClient\:\:\$recordedResponses \(array\<\(callable\(\)\: mixed\)\|Saloon\\Http\\Faking\\Fixture\|Saloon\\Http\\Faking\\MockResponse\>\) does not accept non\-empty\-array\<\(callable\(\)\: mixed\)\|Saloon\\Http\\Faking\\Fixture\|Saloon\\Http\\Faking\\MockResponse\|Saloon\\Http\\Response\>\.$#' + message: '#^Property Saloon\\Http\\Faking\\MockClient\:\:\$recordedResponses \(array\<\(callable\(\)\: mixed\)\|Saloon\\Http\\Faking\\Fixture\|Saloon\\Http\\Faking\\MockResponse\>\) does not accept non\-empty\-array\<\(callable\(\)\: mixed\)\|Saloon\\Http\\Faking\\Fixture\|Saloon\\Http\\Faking\\MockResponse\|Saloon\\Http\\Response\\>\.$#' identifier: assign.propertyType count: 1 path: src/Http/Faking/MockClient.php diff --git a/src/Contracts/DataObjects/WithResponse.php b/src/Contracts/DataObjects/WithResponse.php index a6c58e4b..827e6856 100644 --- a/src/Contracts/DataObjects/WithResponse.php +++ b/src/Contracts/DataObjects/WithResponse.php @@ -11,12 +11,15 @@ interface WithResponse /** * Set the response on the data object. * + * @param Response $response * @return $this */ public function setResponse(Response $response): static; /** * Get the response on the data object. + * + * @return Response */ public function getResponse(): Response; } diff --git a/src/Contracts/ResponseMiddleware.php b/src/Contracts/ResponseMiddleware.php index ee63b948..7777d075 100644 --- a/src/Contracts/ResponseMiddleware.php +++ b/src/Contracts/ResponseMiddleware.php @@ -11,7 +11,8 @@ interface ResponseMiddleware /** * Register a response middleware * - * @return \Saloon\Http\Response|void + * @param Response $response + * @return Response|void */ public function __invoke(Response $response); } diff --git a/src/Contracts/Sender.php b/src/Contracts/Sender.php index 987ec06f..83711ef8 100644 --- a/src/Contracts/Sender.php +++ b/src/Contracts/Sender.php @@ -18,6 +18,8 @@ public function getFactoryCollection(): FactoryCollection; /** * Send the request synchronously + * + * @return Response */ public function send(PendingRequest $pendingRequest): Response; diff --git a/src/Data/RecordedResponse.php b/src/Data/RecordedResponse.php index 68ec71a6..55351dfb 100644 --- a/src/Data/RecordedResponse.php +++ b/src/Data/RecordedResponse.php @@ -58,6 +58,8 @@ public static function fromFile(string $contents): static /** * Create an instance from a Response + * + * @param Response $response */ public static function fromResponse(Response $response): static { diff --git a/src/Exceptions/Request/RequestException.php b/src/Exceptions/Request/RequestException.php index 5e1a9fee..09fc128a 100644 --- a/src/Exceptions/Request/RequestException.php +++ b/src/Exceptions/Request/RequestException.php @@ -21,6 +21,8 @@ class RequestException extends SaloonException { /** * The Saloon Response + * + * @var Response */ protected Response $response; @@ -31,6 +33,8 @@ class RequestException extends SaloonException /** * Create the RequestException + * + * @param Response $response */ public function __construct(Response $response, ?string $message = null, int $code = 0, ?Throwable $previous = null) { @@ -50,6 +54,8 @@ public function __construct(Response $response, ?string $message = null, int $co /** * Get the Saloon Response Class. + * + * @return Response */ public function getResponse(): Response { diff --git a/src/Helpers/Debugger.php b/src/Helpers/Debugger.php index e1e91d02..4c74a649 100644 --- a/src/Helpers/Debugger.php +++ b/src/Helpers/Debugger.php @@ -46,6 +46,8 @@ public static function symfonyRequestDebugger(PendingRequest $pendingRequest, Re /** * Debug a response with Symfony Var Dumper + * + * @param Response $response */ public static function symfonyResponseDebugger(Response $response, ResponseInterface $psrResponse): void { diff --git a/src/Helpers/Helpers.php b/src/Helpers/Helpers.php index af3b73ff..ba7a69b0 100644 --- a/src/Helpers/Helpers.php +++ b/src/Helpers/Helpers.php @@ -80,6 +80,7 @@ public static function isSubclassOf(string $class, string $subclass): bool * Boot a plugin * * @param class-string $trait + * @param Connector|Request $resource * @throws \ReflectionException */ public static function bootPlugin(PendingRequest $pendingRequest, Connector|Request $resource, string $trait): void diff --git a/src/Helpers/MiddlewarePipeline.php b/src/Helpers/MiddlewarePipeline.php index 06fe94f5..ae68f51b 100644 --- a/src/Helpers/MiddlewarePipeline.php +++ b/src/Helpers/MiddlewarePipeline.php @@ -75,7 +75,7 @@ public function onRequest(callable $callable, ?string $name = null, ?PipeOrder $ /** * Add a middleware after the request is sent * - * @param callable(\Saloon\Http\Response): (\Saloon\Http\Response|void) $callable + * @param callable(\Saloon\Http\Response): (\Saloon\Http\Response|void) $callable * @return $this */ public function onResponse(callable $callable, ?string $name = null, ?PipeOrder $order = null): static @@ -136,6 +136,9 @@ public function executeRequestPipeline(PendingRequest $pendingRequest): PendingR /** * Process the response pipeline. + * + * @param Response $response + * @return Response */ public function executeResponsePipeline(Response $response): Response { diff --git a/src/Helpers/OAuth2/OAuthConfig.php b/src/Helpers/OAuth2/OAuthConfig.php index b3ab2c59..68130a86 100644 --- a/src/Helpers/OAuth2/OAuthConfig.php +++ b/src/Helpers/OAuth2/OAuthConfig.php @@ -49,7 +49,7 @@ class OAuthConfig /** * Callable that modifies the OAuth requests * - * @var \Closure(\Saloon\Http\Request): (void)|null + * @var \Closure(\Saloon\Http\Request): (void)|null */ protected ?Closure $requestModifier = null; @@ -206,7 +206,7 @@ public function setDefaultScopes(array $defaultScopes): static /** * Set the request modifier callable which can be used to modify the request being sent * - * @param callable(\Saloon\Http\Request): (void) $requestModifier + * @param callable(\Saloon\Http\Request): (void) $requestModifier * @return $this */ public function setRequestModifier(callable $requestModifier): static diff --git a/src/Helpers/RequestExceptionHelper.php b/src/Helpers/RequestExceptionHelper.php index 38f33b6a..bd80f678 100644 --- a/src/Helpers/RequestExceptionHelper.php +++ b/src/Helpers/RequestExceptionHelper.php @@ -25,6 +25,8 @@ class RequestExceptionHelper { /** * Create the request exception from a response + * + * @param Response $response */ public static function create(Response $response, ?Throwable $previous = null): RequestException { diff --git a/src/Http/Connector.php b/src/Http/Connector.php index d0970bc0..1cbfaeee 100644 --- a/src/Http/Connector.php +++ b/src/Http/Connector.php @@ -21,6 +21,7 @@ abstract class Connector { + /** @use CreatesDtoFromResponse */ use CreatesDtoFromResponse; use AuthenticatesRequests; use HasRequestProperties; diff --git a/src/Http/Faking/MockClient.php b/src/Http/Faking/MockClient.php index 7250deca..93cafb19 100644 --- a/src/Http/Faking/MockClient.php +++ b/src/Http/Faking/MockClient.php @@ -186,6 +186,8 @@ public function isEmpty(): bool /** * Record a response. + * + * @param Response $response */ public function recordResponse(Response $response): void { @@ -195,7 +197,7 @@ public function recordResponse(Response $response): void /** * Get all the recorded responses * - * @return array<\Saloon\Http\Response> + * @return array<\Saloon\Http\Response> */ public function getRecordedResponses(): array { @@ -204,6 +206,8 @@ public function getRecordedResponses(): array /** * Get the last request that the mock manager sent. + * + * @return Request|null */ public function getLastRequest(): ?Request { @@ -220,6 +224,8 @@ public function getLastPendingRequest(): ?PendingRequest /** * Get the last response that the mock manager sent. + * + * @return Response|null */ public function getLastResponse(): ?Response { @@ -337,6 +343,8 @@ protected function checkRequestWasNotSent(string|callable $request): bool /** * Assert a given request was sent. + * + * @return Response|null */ public function findResponseByRequest(string $request, ?int $index = null): ?Response { @@ -369,6 +377,8 @@ public function findResponseByRequest(string $request, ?int $index = null): ?Res /** * Find a request that matches a given url pattern + * + * @return Response|null */ public function findResponseByRequestUrl(string $url, ?int $index = null): ?Response { diff --git a/src/Http/Middleware/RecordFixture.php b/src/Http/Middleware/RecordFixture.php index 6f247343..7970380c 100644 --- a/src/Http/Middleware/RecordFixture.php +++ b/src/Http/Middleware/RecordFixture.php @@ -33,6 +33,8 @@ public function __construct(Fixture $fixture, MockClient $mockClient) /** * Store the response + * + * @param Response $response */ public function __invoke(Response $response): void { diff --git a/src/Http/OAuth2/GetAccessTokenRequest.php b/src/Http/OAuth2/GetAccessTokenRequest.php index dfc0569c..83903abd 100644 --- a/src/Http/OAuth2/GetAccessTokenRequest.php +++ b/src/Http/OAuth2/GetAccessTokenRequest.php @@ -11,6 +11,9 @@ use Saloon\Helpers\OAuth2\OAuthConfig; use Saloon\Traits\Plugins\AcceptsJson; +/** + * @extends Request + */ class GetAccessTokenRequest extends Request implements HasBody { use HasFormBody; diff --git a/src/Http/OAuth2/GetClientCredentialsTokenBasicAuthRequest.php b/src/Http/OAuth2/GetClientCredentialsTokenBasicAuthRequest.php index 4b226874..09f15135 100644 --- a/src/Http/OAuth2/GetClientCredentialsTokenBasicAuthRequest.php +++ b/src/Http/OAuth2/GetClientCredentialsTokenBasicAuthRequest.php @@ -13,6 +13,9 @@ use Saloon\Traits\Plugins\AcceptsJson; use Saloon\Http\Auth\BasicAuthenticator; +/** + * @extends Request + */ class GetClientCredentialsTokenBasicAuthRequest extends Request implements HasBody { use HasFormBody; diff --git a/src/Http/OAuth2/GetClientCredentialsTokenRequest.php b/src/Http/OAuth2/GetClientCredentialsTokenRequest.php index fb544aaa..bcf0b943 100644 --- a/src/Http/OAuth2/GetClientCredentialsTokenRequest.php +++ b/src/Http/OAuth2/GetClientCredentialsTokenRequest.php @@ -11,6 +11,9 @@ use Saloon\Helpers\OAuth2\OAuthConfig; use Saloon\Traits\Plugins\AcceptsJson; +/** + * @extends Request + */ class GetClientCredentialsTokenRequest extends Request implements HasBody { use HasFormBody; diff --git a/src/Http/OAuth2/GetRefreshTokenRequest.php b/src/Http/OAuth2/GetRefreshTokenRequest.php index 15daef20..13e1ad3c 100644 --- a/src/Http/OAuth2/GetRefreshTokenRequest.php +++ b/src/Http/OAuth2/GetRefreshTokenRequest.php @@ -11,6 +11,9 @@ use Saloon\Helpers\OAuth2\OAuthConfig; use Saloon\Traits\Plugins\AcceptsJson; +/** + * @extends Request + */ class GetRefreshTokenRequest extends Request implements HasBody { use HasFormBody; diff --git a/src/Http/OAuth2/GetUserRequest.php b/src/Http/OAuth2/GetUserRequest.php index 22c07b1a..98784a52 100644 --- a/src/Http/OAuth2/GetUserRequest.php +++ b/src/Http/OAuth2/GetUserRequest.php @@ -11,6 +11,9 @@ use Saloon\Helpers\OAuth2\OAuthConfig; use Saloon\Traits\Plugins\AcceptsJson; +/** + * @extends Request + */ class GetUserRequest extends Request implements HasBody { use HasFormBody; diff --git a/src/Http/PendingRequest.php b/src/Http/PendingRequest.php index 02fcf0bd..7b429b70 100644 --- a/src/Http/PendingRequest.php +++ b/src/Http/PendingRequest.php @@ -46,6 +46,8 @@ class PendingRequest /** * The request used by the instance. + * + * @var Request */ protected Request $request; @@ -76,6 +78,8 @@ class PendingRequest /** * Build up the request payload. + * + * @param Request $request */ public function __construct(Connector $connector, Request $request, ?MockClient $mockClient = null) { @@ -147,6 +151,9 @@ public function authenticate(Authenticator $authenticator): static /** * Execute the response pipeline. + * + * @param Response $response + * @return Response */ public function executeResponsePipeline(Response $response): Response { @@ -163,6 +170,8 @@ public function executeFatalPipeline(FatalRequestException $throwable): void /** * Get the request. + * + * @return Request */ public function getRequest(): Request { @@ -291,7 +300,7 @@ public function setAsynchronous(bool $asynchronous): static /** * Get the response class * - * @return class-string<\Saloon\Http\Response> + * @return class-string<\Saloon\Http\Response> * @throws \Saloon\Exceptions\InvalidResponseClassException */ public function getResponseClass(): string diff --git a/src/Http/Pool.php b/src/Http/Pool.php index fc6053be..a684ac3c 100644 --- a/src/Http/Pool.php +++ b/src/Http/Pool.php @@ -15,14 +15,14 @@ class Pool /** * Requests inside the pool * - * @var iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request> + * @var iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request> */ protected iterable $requests; /** * Handle Response Callback * - * @var \Closure(\Saloon\Http\Response, array-key, \GuzzleHttp\Promise\PromiseInterface): (void)|null + * @var \Closure(\Saloon\Http\Response, array-key, \GuzzleHttp\Promise\PromiseInterface): (void)|null */ protected ?Closure $responseHandler = null; @@ -50,9 +50,9 @@ class Pool /** * Constructor * - * @param iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request>|callable(\Saloon\Http\Connector): iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request> $requests + * @param iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request>|callable(\Saloon\Http\Connector): iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request> $requests * @param int|callable(int $pendingRequests): (int) $concurrency - * @param callable(\Saloon\Http\Response, array-key $key, \GuzzleHttp\Promise\PromiseInterface $poolAggregate): (void)|null $responseHandler + * @param callable(\Saloon\Http\Response, array-key $key, \GuzzleHttp\Promise\PromiseInterface $poolAggregate): (void)|null $responseHandler * @param callable(mixed $reason, array-key $key, \GuzzleHttp\Promise\PromiseInterface $poolAggregate): (void)|null $exceptionHandler */ public function __construct(Connector $connector, iterable|callable $requests = [], int|callable $concurrency = 5, callable|null $responseHandler = null, callable|null $exceptionHandler = null) @@ -73,7 +73,7 @@ public function __construct(Connector $connector, iterable|callable $requests = /** * Specify a callback to happen for each successful request * - * @param callable(\Saloon\Http\Response, array-key $key, \GuzzleHttp\Promise\PromiseInterface $poolAggregate): (void) $callable + * @param callable(\Saloon\Http\Response, array-key $key, \GuzzleHttp\Promise\PromiseInterface $poolAggregate): (void) $callable * @return $this */ public function withResponseHandler(callable $callable): static @@ -112,7 +112,7 @@ public function setConcurrency(int|callable $concurrency): static /** * Set the requests * - * @param iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request>|callable(\Saloon\Http\Connector): iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request> $requests + * @param iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request>|callable(\Saloon\Http\Connector): iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request> $requests * @return $this */ public function setRequests(iterable|callable $requests): static @@ -133,7 +133,7 @@ public function setRequests(iterable|callable $requests): static /** * Get the request generator * - * @return iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request> + * @return iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request> */ public function getRequests(): iterable { diff --git a/src/Http/Request.php b/src/Http/Request.php index 641b62ec..a1237b67 100644 --- a/src/Http/Request.php +++ b/src/Http/Request.php @@ -20,8 +20,12 @@ use Saloon\Traits\Request\CreatesDtoFromResponse; use Saloon\Traits\RequestProperties\HasRequestProperties; +/** + * @template TDto + */ abstract class Request { + /** @use CreatesDtoFromResponse */ use CreatesDtoFromResponse; use AuthenticatesRequests; use HasRequestProperties; diff --git a/src/Http/Response.php b/src/Http/Response.php index 1500d2da..f8965798 100644 --- a/src/Http/Response.php +++ b/src/Http/Response.php @@ -26,6 +26,9 @@ use Saloon\Contracts\DataObjects\WithResponse; use Saloon\Contracts\ArrayStore as ArrayStoreContract; +/** + * @template TDto + */ class Response { use Macroable; @@ -119,6 +122,8 @@ public function getConnector(): Connector /** * Get the original request that created the response. + * + * @return Request */ public function getRequest(): Request { @@ -304,6 +309,8 @@ public function collect(string|int|null $key = null): Collection /** * Cast the response to a DTO. + * + * @return TDto */ public function dto(): mixed { @@ -321,6 +328,8 @@ public function dto(): mixed /** * Convert the response into a DTO or throw a LogicException if the response failed + * + * @return TDto */ public function dtoOrFail(): mixed { diff --git a/src/Http/Senders/GuzzleSender.php b/src/Http/Senders/GuzzleSender.php index 82c6a47e..58339e68 100644 --- a/src/Http/Senders/GuzzleSender.php +++ b/src/Http/Senders/GuzzleSender.php @@ -99,6 +99,7 @@ protected function defaultHandlerStack(): HandlerStack * * @throws \GuzzleHttp\Exception\GuzzleException * @throws \Saloon\Exceptions\Request\FatalRequestException + * @return Response */ public function send(PendingRequest $pendingRequest): Response { @@ -187,10 +188,12 @@ function (TransferException $guzzleException) use ($pendingRequest, $psrRequest) /** * Create a response. + * + * @return Response */ protected function createResponse(ResponseInterface $psrResponse, PendingRequest $pendingRequest, RequestInterface $psrRequest, ?Exception $exception = null): Response { - /** @var class-string<\Saloon\Http\Response> $responseClass */ + /** @var class-string<\Saloon\Http\Response> $responseClass */ $responseClass = $pendingRequest->getResponseClass(); return $responseClass::fromPsrResponse($psrResponse, $pendingRequest, $psrRequest, $exception); diff --git a/src/Http/SoloRequest.php b/src/Http/SoloRequest.php index 31889f49..cc2d09d2 100644 --- a/src/Http/SoloRequest.php +++ b/src/Http/SoloRequest.php @@ -7,6 +7,10 @@ use Saloon\Traits\Request\HasConnector; use Saloon\Http\Connectors\NullConnector; +/** + * @template TDto + * @extends Request + */ abstract class SoloRequest extends Request { use HasConnector; diff --git a/src/Traits/Connector/ManagesFakeResponses.php b/src/Traits/Connector/ManagesFakeResponses.php index 9ce2ee0f..ed218a10 100644 --- a/src/Traits/Connector/ManagesFakeResponses.php +++ b/src/Traits/Connector/ManagesFakeResponses.php @@ -21,6 +21,7 @@ trait ManagesFakeResponses * * @throws \Saloon\Exceptions\PendingRequestException * @throws \Throwable + * @return Response|PromiseInterface */ protected function createFakeResponse(PendingRequest $pendingRequest): Response|PromiseInterface { @@ -50,7 +51,7 @@ protected function createFakeResponse(PendingRequest $pendingRequest): Response| streamFactory: $factories->streamFactory, ); - /** @var class-string<\Saloon\Http\Response> $responseClass */ + /** @var class-string<\Saloon\Http\Response> $responseClass */ $responseClass = $pendingRequest->getResponseClass(); $response = $responseClass::fromPsrResponse( diff --git a/src/Traits/Connector/SendsRequests.php b/src/Traits/Connector/SendsRequests.php index a4482adf..aac49fe8 100644 --- a/src/Traits/Connector/SendsRequests.php +++ b/src/Traits/Connector/SendsRequests.php @@ -24,7 +24,10 @@ trait SendsRequests /** * Send a request synchronously * - * @param callable(\Throwable, \Saloon\Http\Request): (bool)|null $handleRetry + * @template TDto + * @param Request $request + * @param callable(\Throwable, \Saloon\Http\Request): (bool)|null $handleRetry + * @return Response */ public function send(Request $request, ?MockClient $mockClient = null, ?callable $handleRetry = null): Response { @@ -125,6 +128,8 @@ public function send(Request $request, ?MockClient $mockClient = null, ?callable /** * Send a request asynchronously + * + * @param Request $request */ public function sendAsync(Request $request, ?MockClient $mockClient = null): PromiseInterface { @@ -161,7 +166,9 @@ public function sendAsync(Request $request, ?MockClient $mockClient = null): Pro * * @deprecated This method will be removed in Saloon v4. Please refer to the documentation to see connector or request-based retry functionality. * - * @param callable(\Throwable, \Saloon\Http\Request): (bool)|null $handleRetry + * @param Request $request + * @param callable(\Throwable, \Saloon\Http\Request): (bool)|null $handleRetry + * @return Response */ public function sendAndRetry(Request $request, int $tries, int $interval = 0, ?callable $handleRetry = null, bool $throw = true, ?MockClient $mockClient = null, bool $useExponentialBackoff = false): Response { @@ -175,6 +182,8 @@ public function sendAndRetry(Request $request, int $tries, int $interval = 0, ?c /** * Create a new PendingRequest + * + * @param Request $request */ public function createPendingRequest(Request $request, ?MockClient $mockClient = null): PendingRequest { @@ -184,9 +193,9 @@ public function createPendingRequest(Request $request, ?MockClient $mockClient = /** * Create a request pool * - * @param iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request>|callable(\Saloon\Http\Connector): iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request> $requests + * @param iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request>|callable(\Saloon\Http\Connector): iterable<\GuzzleHttp\Promise\PromiseInterface|\Saloon\Http\Request> $requests * @param int|callable(int $pendingRequests): (int) $concurrency - * @param callable(\Saloon\Http\Response, array-key $key, \GuzzleHttp\Promise\PromiseInterface $poolAggregate): (void)|null $responseHandler + * @param callable(\Saloon\Http\Response, array-key $key, \GuzzleHttp\Promise\PromiseInterface $poolAggregate): (void)|null $responseHandler * @param callable(mixed $reason, array-key $key, \GuzzleHttp\Promise\PromiseInterface $poolAggregate): (void)|null $exceptionHandler */ public function pool(iterable|callable $requests = [], int|callable $concurrency = 5, callable|null $responseHandler = null, callable|null $exceptionHandler = null): Pool diff --git a/src/Traits/HasDebugging.php b/src/Traits/HasDebugging.php index daa321c7..b0a46146 100644 --- a/src/Traits/HasDebugging.php +++ b/src/Traits/HasDebugging.php @@ -49,7 +49,7 @@ public function debugRequest(?callable $onRequest = null, bool $die = false): st * * Leave blank for a default debugger (requires symfony/var-dump) * - * @param callable(\Saloon\Http\Response, \Psr\Http\Message\ResponseInterface): void|null $onResponse + * @param callable(\Saloon\Http\Response, \Psr\Http\Message\ResponseInterface): void|null $onResponse * @return $this */ public function debugResponse(?callable $onResponse = null, bool $die = false): static diff --git a/src/Traits/ManagesExceptions.php b/src/Traits/ManagesExceptions.php index 60fb25d8..a9bafd48 100644 --- a/src/Traits/ManagesExceptions.php +++ b/src/Traits/ManagesExceptions.php @@ -11,6 +11,8 @@ trait ManagesExceptions { /** * Determine if the request has failed. + * + * @param Response $response */ public function hasRequestFailed(Response $response): ?bool { @@ -19,6 +21,8 @@ public function hasRequestFailed(Response $response): ?bool /** * Get the request exception. + * + * @param Response $response */ public function getRequestException(Response $response, ?Throwable $senderException): ?Throwable { @@ -28,6 +32,8 @@ public function getRequestException(Response $response, ?Throwable $senderExcept /** * Determine if we should throw an exception if the `$response->throw()` is * used, or when the `AlwaysThrowOnErrors` trait is used. + * + * @param Response $response */ public function shouldThrowRequestException(Response $response): bool { diff --git a/src/Traits/Request/CreatesDtoFromResponse.php b/src/Traits/Request/CreatesDtoFromResponse.php index 1dd256d2..84a2b11c 100644 --- a/src/Traits/Request/CreatesDtoFromResponse.php +++ b/src/Traits/Request/CreatesDtoFromResponse.php @@ -6,10 +6,16 @@ use Saloon\Http\Response; +/** + * @template TDto + */ trait CreatesDtoFromResponse { /** * Cast the response to a DTO. + * + * @param Response $response + * @return TDto|null */ public function createDtoFromResponse(Response $response): mixed { diff --git a/src/Traits/Request/HasConnector.php b/src/Traits/Request/HasConnector.php index 26f8859a..e05fa790 100644 --- a/src/Traits/Request/HasConnector.php +++ b/src/Traits/Request/HasConnector.php @@ -64,6 +64,8 @@ public function createPendingRequest(?MockClient $mockClient = null): PendingReq /** * Send a request synchronously + * + * @return Response */ public function send(?MockClient $mockClient = null): Response { diff --git a/src/Traits/RequestProperties/HasTries.php b/src/Traits/RequestProperties/HasTries.php index 95cb930a..7c0f475e 100644 --- a/src/Traits/RequestProperties/HasTries.php +++ b/src/Traits/RequestProperties/HasTries.php @@ -47,6 +47,8 @@ trait HasTries * * You can access the response from the RequestException. You can also modify the * request before the next attempt is made. + * + * @param Request $request */ public function handleRetry(FatalRequestException|RequestException $exception, Request $request): bool { diff --git a/src/Traits/Responses/HasCustomResponses.php b/src/Traits/Responses/HasCustomResponses.php index 0100ab7f..d5426778 100644 --- a/src/Traits/Responses/HasCustomResponses.php +++ b/src/Traits/Responses/HasCustomResponses.php @@ -11,14 +11,14 @@ trait HasCustomResponses * * When null or an empty string, the response on the sender will be used. * - * @var class-string<\Saloon\Http\Response>|null + * @var class-string<\Saloon\Http\Response>|null */ protected ?string $response = null; /** * Resolve the custom response class * - * @return class-string<\Saloon\Http\Response>|null + * @return class-string<\Saloon\Http\Response>|null */ public function resolveResponseClass(): ?string {