Skip to content

Commit 7d05f6a

Browse files
committed
feat: add custom exception for revoked access tokens
1 parent 2e0473a commit 7d05f6a

3 files changed

Lines changed: 31 additions & 0 deletions

File tree

src/Connectors/AuthConnector.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,26 @@
44

55
use Saloon\Helpers\OAuth2\OAuthConfig;
66
use Saloon\Http\Connector;
7+
use Saloon\Http\Response;
78
use Saloon\Traits\OAuth2\AuthorizationCodeGrant;
89
use Saloon\Traits\Plugins\AlwaysThrowOnErrors;
10+
use Sensson\Moneybird\Exceptions\AccessTokenRevokedException;
11+
use Throwable;
912

1013
class AuthConnector extends Connector
1114
{
1215
use AlwaysThrowOnErrors;
1316
use AuthorizationCodeGrant;
1417

18+
public function getRequestException(Response $response, ?Throwable $senderException): ?Throwable
19+
{
20+
if ($response->status() === 401 && str_contains($response->body(), 'access token revoked')) {
21+
return new AccessTokenRevokedException($response, previous: $senderException);
22+
}
23+
24+
return null;
25+
}
26+
1527
public function resolveBaseUrl(): string
1628
{
1729
return 'https://moneybird.com/oauth';

src/Connectors/MoneybirdConnector.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
namespace Sensson\Moneybird\Connectors;
44

55
use Saloon\Http\Connector;
6+
use Saloon\Http\Response;
67
use Saloon\RateLimitPlugin\Contracts\RateLimitStore;
78
use Saloon\RateLimitPlugin\Limit;
89
use Saloon\RateLimitPlugin\Stores\MemoryStore;
910
use Saloon\RateLimitPlugin\Traits\HasRateLimits;
1011
use Saloon\Traits\Conditionable;
1112
use Saloon\Traits\Plugins\AcceptsJson;
1213
use Saloon\Traits\Plugins\AlwaysThrowOnErrors;
14+
use Sensson\Moneybird\Exceptions\AccessTokenRevokedException;
15+
use Throwable;
1316
use Sensson\Moneybird\Resources\AdministrationResource;
1417
use Sensson\Moneybird\Resources\ContactResource;
1518
use Sensson\Moneybird\Resources\CustomFieldResource;
@@ -51,6 +54,15 @@ protected function resolveRateLimitStore(): RateLimitStore
5154
return new MemoryStore;
5255
}
5356

57+
public function getRequestException(Response $response, ?Throwable $senderException): ?Throwable
58+
{
59+
if ($response->status() === 401 && str_contains($response->body(), 'access token revoked')) {
60+
return new AccessTokenRevokedException($response, previous: $senderException);
61+
}
62+
63+
return null;
64+
}
65+
5466
public function administration(string $administrationId): self
5567
{
5668
$this->administrationId = $administrationId;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace Sensson\Moneybird\Exceptions;
4+
5+
use Saloon\Exceptions\Request\Statuses\UnauthorizedException;
6+
7+
class AccessTokenRevokedException extends UnauthorizedException {}

0 commit comments

Comments
 (0)