mirror of
https://github.com/anikeen-com/id.git
synced 2026-03-13 13:46:13 +00:00
refactor code
This commit is contained in:
@@ -22,7 +22,8 @@
|
||||
"firebase/php-jwt": "^6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.0|^9.0"
|
||||
"phpunit/phpunit": "^8.0|^9.0",
|
||||
"laravel/framework": "^11.0|^12.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
@@ -49,4 +50,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -327,7 +327,7 @@ class AnikeenId
|
||||
* @throws GuzzleException
|
||||
* @throws RequestRequiresClientIdException
|
||||
*/
|
||||
public function request(string $method, string $path, null|array $payload = null, array $parameters = [], ?Paginator $paginator = null): Result
|
||||
public function request(string $method, string $path, null|array $payload = null, array $parameters = [], ?Paginator $paginator = null, bool $useClientSecret = false): Result
|
||||
{
|
||||
if ($paginator !== null) {
|
||||
$parameters[$paginator->action] = $paginator->cursor();
|
||||
@@ -335,7 +335,7 @@ class AnikeenId
|
||||
|
||||
try {
|
||||
$response = $this->client->request($method, $path, [
|
||||
'headers' => $this->buildHeaders((bool)$payload),
|
||||
'headers' => $this->buildHeaders((bool)$payload, $useClientSecret),
|
||||
'query' => Query::build($parameters),
|
||||
'json' => $payload ?: null,
|
||||
]);
|
||||
@@ -353,14 +353,14 @@ class AnikeenId
|
||||
*
|
||||
* @throws RequestRequiresClientIdException
|
||||
*/
|
||||
private function buildHeaders(bool $json = false): array
|
||||
private function buildHeaders(bool $json = false, bool $useClientSecret = false): array
|
||||
{
|
||||
$headers = [
|
||||
'Client-ID' => $this->getClientId(),
|
||||
'Accept' => 'application/json',
|
||||
];
|
||||
if ($this->token) {
|
||||
$headers['Authorization'] = 'Bearer ' . $this->token;
|
||||
if ($bearerToken = $useClientSecret ? $this->getClientSecret() : $this->getToken()) {
|
||||
$headers['Authorization'] = 'Bearer ' . $bearerToken;
|
||||
}
|
||||
if ($json) {
|
||||
$headers['Content-Type'] = 'application/json';
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
namespace Anikeen\Id;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Request;
|
||||
use Anikeen\Id\Concerns\ManagesAddresses;
|
||||
use Anikeen\Id\Concerns\ManagesBalance;
|
||||
use Anikeen\Id\Concerns\ManagesCountries;
|
||||
@@ -13,8 +12,6 @@ use Anikeen\Id\Concerns\ManagesProfile;
|
||||
use Anikeen\Id\Concerns\ManagesSubscriptions;
|
||||
use Anikeen\Id\Concerns\ManagesTaxation;
|
||||
use Anikeen\Id\Concerns\ManagesTransactions;
|
||||
use Anikeen\Id\Helpers\Paginator;
|
||||
use stdClass;
|
||||
use Throwable;
|
||||
|
||||
trait Billable
|
||||
@@ -29,31 +26,27 @@ trait Billable
|
||||
use ManagesSubscriptions;
|
||||
use ManagesTaxation;
|
||||
use ManagesTransactions;
|
||||
use Request;
|
||||
|
||||
/**
|
||||
* Get the currently authenticated user.
|
||||
*
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function getUserData(): stdClass
|
||||
public function getUserData(): object
|
||||
{
|
||||
if (!isset($this->userDataCache)) {
|
||||
$this->userDataCache = $this->request('GET', 'v1/user')->data;
|
||||
$this->userDataCache = $this->anikeenId()->request('GET', 'v1/user')->data;
|
||||
}
|
||||
return $this->userDataCache;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a request to the Anikeen API.
|
||||
* Get the AnikeenId class.
|
||||
*
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function request(string $method, string $path, null|array $payload = null, array $parameters = [], ?Paginator $paginator = null): Result
|
||||
public function anikeenId(): AnikeenId
|
||||
{
|
||||
$anikeenId = new AnikeenId();
|
||||
$anikeenId->withToken($this->{AnikeenId::getAccessTokenField()});
|
||||
|
||||
return $anikeenId->request($method, $path, $payload, $parameters, $paginator);
|
||||
return app(AnikeenId::class)->withToken($this->{AnikeenId::getAccessTokenField()});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,18 +2,21 @@
|
||||
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\Contracts\Billable;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
trait HasBillable
|
||||
{
|
||||
public mixed $billable;
|
||||
public Billable|Model $billable;
|
||||
|
||||
public function setBillable(mixed $billable): self
|
||||
public function setBillable(Billable|Model $billable): self
|
||||
{
|
||||
$this->billable = $billable;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getBillable(): mixed
|
||||
public function getBillable(): Billable
|
||||
{
|
||||
return $this->billable;
|
||||
}
|
||||
|
||||
@@ -2,14 +2,12 @@
|
||||
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Request;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Anikeen\Id\Resources\Addresses;
|
||||
use Throwable;
|
||||
|
||||
trait ManagesAddresses
|
||||
{
|
||||
use Request;
|
||||
use HasBillable;
|
||||
|
||||
/**
|
||||
* Get addresses from the current user.
|
||||
@@ -19,7 +17,8 @@ trait ManagesAddresses
|
||||
public function addresses(): Addresses
|
||||
{
|
||||
if (!isset($this->addressesCache)) {
|
||||
$this->addressesCache = Addresses::builder(fn() => $this->request('GET', 'v1/addresses'))
|
||||
$this->addressesCache = Addresses::builder(fn() => $this->anikeenId()
|
||||
->request('GET', 'v1/addresses'))
|
||||
->setBillable($this);
|
||||
}
|
||||
|
||||
@@ -29,8 +28,8 @@ trait ManagesAddresses
|
||||
/**
|
||||
* Check if the current user has a default billing address.
|
||||
*
|
||||
* @see \Anikeen\Id\Resources\Addresses::hasDefaultBillingAddress()
|
||||
* @throws Throwable
|
||||
* @see \Anikeen\Id\Resources\Addresses::hasDefaultBillingAddress()
|
||||
*/
|
||||
public function hasDefaultBillingAddress(): bool
|
||||
{
|
||||
|
||||
@@ -2,13 +2,12 @@
|
||||
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Request;
|
||||
use Anikeen\Id\Resources\Transaction;
|
||||
use Throwable;
|
||||
|
||||
trait ManagesBalance
|
||||
{
|
||||
use Request;
|
||||
use HasBillable;
|
||||
|
||||
/**
|
||||
* Get balance from the current user.
|
||||
@@ -40,10 +39,12 @@ trait ManagesBalance
|
||||
*/
|
||||
public function charge(float $amount, string $paymentMethodId, array $options = []): Transaction
|
||||
{
|
||||
return new Transaction(fn() => $this->request('POST', 'billing/charge', [
|
||||
'amount' => $amount,
|
||||
'payment_method_id' => $paymentMethodId,
|
||||
'options' => $options,
|
||||
]));
|
||||
return (new Transaction(fn() => $this->anikeenId()
|
||||
->request('POST', 'billing/charge', [
|
||||
'amount' => $amount,
|
||||
'payment_method_id' => $paymentMethodId,
|
||||
'options' => $options,
|
||||
])))
|
||||
->setBillable($this);
|
||||
}
|
||||
}
|
||||
@@ -2,14 +2,12 @@
|
||||
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Request;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Anikeen\Id\Resources\Countries;
|
||||
use Throwable;
|
||||
|
||||
trait ManagesCountries
|
||||
{
|
||||
use Request;
|
||||
use HasBillable;
|
||||
|
||||
/**
|
||||
* Get available countries for the current user.
|
||||
@@ -19,7 +17,8 @@ trait ManagesCountries
|
||||
public function countries(): Countries
|
||||
{
|
||||
if (!isset($this->countriesCache)) {
|
||||
$this->countriesCache = Countries::builder(fn() => $this->request('GET', 'v1/countries'))
|
||||
$this->countriesCache = Countries::builder(fn() => $this->anikeenId()
|
||||
->request('GET', 'v1/countries'))
|
||||
->setBillable($this);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,14 +2,12 @@
|
||||
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Request;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Anikeen\Id\Resources\Invoices;
|
||||
use Throwable;
|
||||
|
||||
trait ManagesInvoices
|
||||
{
|
||||
use Request;
|
||||
use HasBillable;
|
||||
|
||||
/**
|
||||
* Get invoices from the current user.
|
||||
@@ -19,7 +17,8 @@ trait ManagesInvoices
|
||||
public function invoices(array $parameters = []): Invoices
|
||||
{
|
||||
if (!isset($this->invoicesCache)) {
|
||||
$this->invoicesCache = Invoices::builder(fn() => $this->request('GET', 'v1/invoices', [], $parameters))
|
||||
$this->invoicesCache = Invoices::builder(fn() => $this->anikeenId()
|
||||
->request('GET', 'v1/invoices', [], $parameters))
|
||||
->setBillable($this);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,15 +2,12 @@
|
||||
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Request;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Anikeen\Id\Resources\Orders;
|
||||
use Anikeen\Id\Result;
|
||||
use Throwable;
|
||||
|
||||
trait ManagesOrders
|
||||
{
|
||||
use Request;
|
||||
use HasBillable;
|
||||
|
||||
/**
|
||||
* Get orders from the current user.
|
||||
@@ -20,7 +17,8 @@ trait ManagesOrders
|
||||
public function orders(array $parameters = []): Orders
|
||||
{
|
||||
if (!isset($this->ordersCache)) {
|
||||
$this->ordersCache = Orders::builder(fn() => $this->request('GET', 'v1/orders', [], $parameters))
|
||||
$this->ordersCache = Orders::builder(fn() => $this->anikeenId()
|
||||
->request('GET', 'v1/orders', [], $parameters))
|
||||
->setBillable($this);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Request;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Anikeen\Id\Resources\PaymentMethod;
|
||||
use Anikeen\Id\Resources\PaymentMethods;
|
||||
use Anikeen\Id\Result;
|
||||
@@ -11,7 +9,7 @@ use Throwable;
|
||||
|
||||
trait ManagesPaymentMethods
|
||||
{
|
||||
use Request;
|
||||
use HasBillable;
|
||||
|
||||
/**
|
||||
* Get payment methods from the current user.
|
||||
@@ -20,10 +18,10 @@ trait ManagesPaymentMethods
|
||||
*/
|
||||
public function paymentMethods(): PaymentMethods
|
||||
{
|
||||
if (!isset($this->paymentMethodsCache)) {;
|
||||
$this->paymentMethodsCache = PaymentMethods::builder(
|
||||
fn() => $this->request('GET', 'v1/payment-methods')
|
||||
)->setBillable($this);
|
||||
if (!isset($this->paymentMethodsCache)) {
|
||||
$this->paymentMethodsCache = PaymentMethods::builder(fn() => $this->anikeenId()
|
||||
->request('GET', 'v1/payment-methods'))
|
||||
->setBillable($this);
|
||||
}
|
||||
|
||||
return $this->paymentMethodsCache;
|
||||
@@ -32,8 +30,8 @@ trait ManagesPaymentMethods
|
||||
/**
|
||||
* Check if current user has at least one payment method.
|
||||
*
|
||||
* @see \Anikeen\Id\Resources\PaymentMethods::hasPaymentMethod()
|
||||
* @throws Throwable
|
||||
* @see \Anikeen\Id\Resources\PaymentMethods::hasPaymentMethod()
|
||||
*/
|
||||
public function hasPaymentMethod(): ?PaymentMethod
|
||||
{
|
||||
@@ -43,8 +41,8 @@ trait ManagesPaymentMethods
|
||||
/**
|
||||
* Get default payment method from the current user.
|
||||
*
|
||||
* @see \Anikeen\Id\Resources\PaymentMethods::defaultPaymentMethod()
|
||||
* @throws Throwable
|
||||
* @see \Anikeen\Id\Resources\PaymentMethods::defaultPaymentMethod()
|
||||
*/
|
||||
public function defaultPaymentMethod(): ?PaymentMethod
|
||||
{
|
||||
@@ -54,8 +52,8 @@ trait ManagesPaymentMethods
|
||||
/**
|
||||
* Check if the current user has a default payment method.
|
||||
*
|
||||
* @see \Anikeen\Id\Resources\PaymentMethods::hasDefaultPaymentMethod()
|
||||
* @throws Throwable
|
||||
* @see \Anikeen\Id\Resources\PaymentMethods::hasDefaultPaymentMethod()
|
||||
*/
|
||||
public function hasDefaultPaymentMethod(): bool
|
||||
{
|
||||
@@ -71,10 +69,13 @@ trait ManagesPaymentMethods
|
||||
*/
|
||||
public function billingPortalUrl(?string $returnUrl = null, array $options = []): string
|
||||
{
|
||||
return $this->request('POST', 'v1/billing/portal', [
|
||||
'return_url' => $returnUrl,
|
||||
'options' => $options,
|
||||
])->data->url;
|
||||
return $this->anikeenId()
|
||||
->request('POST', 'v1/billing/portal', [
|
||||
'return_url' => $returnUrl,
|
||||
'options' => $options,
|
||||
])
|
||||
->data
|
||||
->url;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -85,8 +86,9 @@ trait ManagesPaymentMethods
|
||||
*/
|
||||
public function createSetupIntent(array $options = []): Result
|
||||
{
|
||||
return $this->request('POST', 'v1/payment-methods', [
|
||||
'options' => $options,
|
||||
]);
|
||||
return $this->anikeenId()
|
||||
->request('POST', 'v1/payment-methods', [
|
||||
'options' => $options,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Post;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Anikeen\Id\Result;
|
||||
use Throwable;
|
||||
|
||||
|
||||
@@ -2,14 +2,11 @@
|
||||
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Request;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Anikeen\Id\Result;
|
||||
use Throwable;
|
||||
|
||||
trait ManagesProfile
|
||||
{
|
||||
use Request;
|
||||
use HasBillable;
|
||||
|
||||
/**
|
||||
* Get the profile url for the current user.
|
||||
@@ -21,7 +18,7 @@ trait ManagesProfile
|
||||
*/
|
||||
public function profilePortalUrl(?string $returnUrl = null, array $options = []): string
|
||||
{
|
||||
return $this->request('POST', 'v1/user/profile', [
|
||||
return $this->anikeenId()->request('POST', 'v1/user/profile', [
|
||||
'return_url' => $returnUrl,
|
||||
'options' => $options,
|
||||
])->data->url;
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Get;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Anikeen\Id\Resources\SshKeys;
|
||||
use Throwable;
|
||||
|
||||
|
||||
@@ -2,14 +2,12 @@
|
||||
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Request;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Anikeen\Id\Resources\Subscriptions;
|
||||
use Throwable;
|
||||
|
||||
trait ManagesSubscriptions
|
||||
{
|
||||
use Request;
|
||||
use HasBillable;
|
||||
|
||||
/**
|
||||
* Get subscriptions from the current user.
|
||||
@@ -19,7 +17,8 @@ trait ManagesSubscriptions
|
||||
public function subscriptions(): Subscriptions
|
||||
{
|
||||
if (!isset($this->subscriptionsCache)) {
|
||||
$this->subscriptionsCache = Subscriptions::builder(fn() => $this->request('GET', 'v1/subscriptions'))
|
||||
$this->subscriptionsCache = Subscriptions::builder(fn() => $this->anikeenId()
|
||||
->request('GET', 'v1/subscriptions'))
|
||||
->setBillable($this);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,13 +2,11 @@
|
||||
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Request;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Throwable;
|
||||
|
||||
trait ManagesTaxation
|
||||
{
|
||||
use Request;
|
||||
use HasBillable;
|
||||
|
||||
/**
|
||||
* Get VAT for the current user.
|
||||
|
||||
@@ -2,15 +2,12 @@
|
||||
|
||||
namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Request;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Anikeen\Id\Resources\Transactions;
|
||||
use Anikeen\Id\Result;
|
||||
use Throwable;
|
||||
|
||||
trait ManagesTransactions
|
||||
{
|
||||
use Request;
|
||||
use HasBillable;
|
||||
|
||||
/**
|
||||
* Get transactions from the current user.
|
||||
@@ -20,7 +17,8 @@ trait ManagesTransactions
|
||||
public function transactions(): Transactions
|
||||
{
|
||||
if (!isset($this->transactionsCache)) {
|
||||
$this->transactionsCache = Transactions::builder(fn() => $this->request('GET', 'v1/transactions'))
|
||||
$this->transactionsCache = Transactions::builder(fn() => $this->anikeenId()
|
||||
->request('GET', 'v1/transactions'))
|
||||
->setBillable($this);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ namespace Anikeen\Id\Concerns;
|
||||
|
||||
use Anikeen\Id\ApiOperations\Get;
|
||||
use Anikeen\Id\ApiOperations\Post;
|
||||
use Anikeen\Id\Exceptions\RequestRequiresClientIdException;
|
||||
use Anikeen\Id\Result;
|
||||
use Throwable;
|
||||
|
||||
@@ -52,11 +51,11 @@ trait ManagesUsers
|
||||
public function refreshToken(string $storedRefreshToken, string $scope = ''): Result
|
||||
{
|
||||
return $this->post('../oauth/token', [
|
||||
'grant_type' => 'refresh_token',
|
||||
'grant_type' => 'refresh_token',
|
||||
'refresh_token' => $storedRefreshToken,
|
||||
'client_id' => $this->clientId,
|
||||
'client_id' => $this->clientId,
|
||||
'client_secret' => $this->clientSecret,
|
||||
'scope' => $scope,
|
||||
'scope' => $scope,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
12
src/Id/Contracts/Billable.php
Normal file
12
src/Id/Contracts/Billable.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace Anikeen\Id\Contracts;
|
||||
|
||||
use Anikeen\Id\AnikeenId;
|
||||
|
||||
interface Billable
|
||||
{
|
||||
public function getUserData(): object;
|
||||
|
||||
public function anikeenId(): AnikeenId;
|
||||
}
|
||||
@@ -9,7 +9,7 @@ use Illuminate\Auth\AuthenticationException;
|
||||
use Illuminate\Http\Request;
|
||||
use stdClass;
|
||||
|
||||
abstract class CheckCredentials
|
||||
abstract class CheckCredentials extends UseParameters
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
|
||||
@@ -8,7 +8,7 @@ use Illuminate\Auth\AuthenticationException;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class CheckForAnyScope
|
||||
class CheckForAnyScope extends UseParameters
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
|
||||
@@ -8,7 +8,7 @@ use Illuminate\Auth\AuthenticationException;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class CheckScopes
|
||||
class CheckScopes extends UseParameters
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
|
||||
20
src/Id/Http/Middleware/UseParameters.php
Normal file
20
src/Id/Http/Middleware/UseParameters.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Anikeen\Id\Http\Middleware;
|
||||
|
||||
abstract class UseParameters
|
||||
{
|
||||
/**
|
||||
* Specify the parameters for the middleware.
|
||||
*
|
||||
* @param string[]|string $param
|
||||
*/
|
||||
public static function using(array|string $param, string ...$params): string
|
||||
{
|
||||
if (is_array($param)) {
|
||||
return static::class . ':' . implode(',', $param);
|
||||
}
|
||||
|
||||
return static::class . ':' . implode(',', [$param, ...$params]);
|
||||
}
|
||||
}
|
||||
@@ -23,9 +23,9 @@ trait OauthTrait
|
||||
],
|
||||
]);
|
||||
|
||||
$result = new Result($response, null);
|
||||
$result = new Result($response, null, $this);
|
||||
} catch (RequestException $exception) {
|
||||
$result = new Result($exception->getResponse(), $exception);
|
||||
$result = new Result($exception->getResponse(), $exception, $this);
|
||||
}
|
||||
|
||||
$result->anikeenId = $this;
|
||||
|
||||
@@ -65,7 +65,8 @@ class Address extends BaseResource
|
||||
*/
|
||||
public function update(array $attributes = []): self
|
||||
{
|
||||
return (new self(fn() => $this->billable->request('PUT', sprintf('v1/addresses/%s', $this->id), $attributes)))
|
||||
return (new self(fn() => $this->billable->anikeenId()
|
||||
->request('PUT', sprintf('v1/addresses/%s', $this->id), $attributes)))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
@@ -76,6 +77,7 @@ class Address extends BaseResource
|
||||
*/
|
||||
public function delete(): bool
|
||||
{
|
||||
return $this->billable->request('DELETE', sprintf('v1/addresses/%s', $this->id))->success();
|
||||
return $this->billable->anikeenId()
|
||||
->request('DELETE', sprintf('v1/addresses/%s', $this->id))->success();
|
||||
}
|
||||
}
|
||||
@@ -46,7 +46,8 @@ class Addresses extends BaseCollection
|
||||
*/
|
||||
public function create(array $attributes = []): Address
|
||||
{
|
||||
return (new Address(fn() => $this->billable->request('POST', 'v1/addresses', $attributes)))
|
||||
return (new Address(fn() => $this->billable->anikeenId()
|
||||
->request('POST', 'v1/addresses', $attributes)))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
@@ -55,8 +56,9 @@ class Addresses extends BaseCollection
|
||||
*/
|
||||
public function find(string $id): ?Address
|
||||
{
|
||||
return (new Address(fn() => $this->billable->request('GET', sprintf('v1/addresses/%s', $id))))
|
||||
->setBillable($this->billable);
|
||||
return (new Address(fn() => $this->billable->anikeenId()
|
||||
->request('GET', sprintf('v1/addresses/%s', $id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,7 +68,8 @@ class Addresses extends BaseCollection
|
||||
*/
|
||||
public function defaultBillingAddress(): Address
|
||||
{
|
||||
return (new Address(fn() => $this->billable->request('GET', sprintf('v1/addresses/%s', $this->billable->getUserData()->billing_address_id))))
|
||||
return (new Address(fn() => $this->billable->anikeenId()
|
||||
->request('GET', sprintf('v1/addresses/%s', $this->billable->getUserData()->billing_address_id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ namespace Anikeen\Id\Resources;
|
||||
|
||||
use Anikeen\Id\AnikeenId;
|
||||
use Anikeen\Id\Exceptions\CollectionException;
|
||||
use Anikeen\Id\Exceptions\ResourceException;
|
||||
use Anikeen\Id\Helpers\Paginator;
|
||||
use Anikeen\Id\Result;
|
||||
use Closure;
|
||||
@@ -24,8 +23,8 @@ use Throwable;
|
||||
* @property Response $response
|
||||
* @property null|Throwable $exception
|
||||
*/
|
||||
#[\AllowDynamicProperties]
|
||||
abstract class BaseCollection implements JsonSerializable
|
||||
#[\AllowDynamicProperties]
|
||||
abstract class BaseCollection implements JsonSerializable
|
||||
{
|
||||
private Closure $callable;
|
||||
public ?Result $result = null;
|
||||
@@ -88,4 +87,4 @@ abstract class BaseCollection implements JsonSerializable
|
||||
{
|
||||
return isset($this->result->{$name});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,9 @@ class Invoice extends BaseResource
|
||||
*/
|
||||
public function getInvoiceTemporaryUrl(): string
|
||||
{
|
||||
return $this->billable->request('PUT', sprintf('v1/invoices/%s', $this->id))->data->temporary_url;
|
||||
return $this->billable->anikeenId()
|
||||
->request('PUT', sprintf('v1/invoices/%s', $this->id))
|
||||
->data
|
||||
->temporary_url;
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,8 @@ class Invoices extends BaseCollection
|
||||
*/
|
||||
public function find(string $id): ?Invoice
|
||||
{
|
||||
return (new Invoice(fn() => $this->billable->request('GET', sprintf('v1/invoices/%s', $id))))
|
||||
->setBillable($this->billable);
|
||||
return (new Invoice(fn() => $this->billable->anikeenId()
|
||||
->request('GET', sprintf('v1/invoices/%s', $id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
}
|
||||
@@ -58,7 +58,8 @@ class Order extends BaseResource
|
||||
*/
|
||||
public function update(array $attributes = []): self
|
||||
{
|
||||
return (new self(fn() => $this->billable->request('PUT', sprintf('v1/orders/%s', $this->id), $attributes)))
|
||||
return (new self(fn() => $this->billable->anikeenId()
|
||||
->request('PUT', sprintf('v1/orders/%s', $this->id), $attributes)))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
@@ -69,7 +70,8 @@ class Order extends BaseResource
|
||||
*/
|
||||
public function checkout(): self
|
||||
{
|
||||
return (new self(fn() => $this->billable->request('PUT', sprintf('v1/orders/%s/checkout', $this->id))))
|
||||
return (new self(fn() => $this->billable->anikeenId()
|
||||
->request('PUT', sprintf('v1/orders/%s/checkout', $this->id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
@@ -80,7 +82,8 @@ class Order extends BaseResource
|
||||
*/
|
||||
public function revoke(): self
|
||||
{
|
||||
return (new self(fn() => $this->billable->request('PUT', sprintf('v1/orders/%s/revoke', $this->id))))
|
||||
return (new self(fn() => $this->billable->anikeenId()
|
||||
->request('PUT', sprintf('v1/orders/%s/revoke', $this->id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
@@ -91,7 +94,8 @@ class Order extends BaseResource
|
||||
*/
|
||||
public function delete(): bool
|
||||
{
|
||||
return $this->billable->request('DELETE', sprintf('v1/orders/%s', $this->id))->success();
|
||||
return $this->billable->anikeenId()
|
||||
->request('DELETE', sprintf('v1/orders/%s', $this->id))->success();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -101,7 +105,8 @@ class Order extends BaseResource
|
||||
*/
|
||||
public function orderItems(array $parameters = []): OrderItems
|
||||
{
|
||||
return OrderItems::builder(fn() => $this->billable->request('GET', sprintf('v1/orders/%s/items', $this->id), [], $parameters))
|
||||
return OrderItems::builder(fn() => $this->billable->anikeenId()
|
||||
->request('GET', sprintf('v1/orders/%s/items', $this->id), [], $parameters))
|
||||
->setBillable($this->billable)
|
||||
->setParent($this);
|
||||
}
|
||||
|
||||
@@ -34,7 +34,8 @@ class OrderItem extends BaseResource
|
||||
*/
|
||||
public function update(array $attributes = []): self
|
||||
{
|
||||
return (new self(fn() => $this->billable->request('PUT', sprintf('v1/orders/%s/items/%s', $this->parent->id, $this->id), $attributes)))
|
||||
return (new self(fn() => $this->billable->anikeenId()
|
||||
->request('PUT', sprintf('v1/orders/%s/items/%s', $this->parent->id, $this->id), $attributes)))
|
||||
->setBillable($this->billable)
|
||||
->setParent($this->parent);
|
||||
}
|
||||
@@ -46,6 +47,7 @@ class OrderItem extends BaseResource
|
||||
*/
|
||||
public function delete(): bool
|
||||
{
|
||||
return $this->billable->request('DELETE', sprintf('v1/orders/%s/items/%s', $this->parent->id, $this->id))->success();
|
||||
return $this->billable->anikeenId()
|
||||
->request('DELETE', sprintf('v1/orders/%s/items/%s', $this->parent->id, $this->id))->success();
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@ namespace Anikeen\Id\Resources;
|
||||
|
||||
use Anikeen\Id\Concerns\HasBillable;
|
||||
use Anikeen\Id\Concerns\HasParent;
|
||||
use Anikeen\Id\Result;
|
||||
use Throwable;
|
||||
|
||||
class OrderItems extends BaseCollection
|
||||
@@ -33,7 +32,8 @@ class OrderItems extends BaseCollection
|
||||
*/
|
||||
public function create(string $orderId, array $attributes = []): OrderItem
|
||||
{
|
||||
return (new OrderItem(fn() => $this->billable->request('POST', sprintf('v1/orders/%s', $orderId), $attributes)))
|
||||
return (new OrderItem(fn() => $this->billable->anikeenId()
|
||||
->request('POST', sprintf('v1/orders/%s', $orderId), $attributes)))
|
||||
->setBillable($this->billable)
|
||||
->setParent($this->parent);
|
||||
}
|
||||
@@ -43,7 +43,8 @@ class OrderItems extends BaseCollection
|
||||
*/
|
||||
public function find(string $id): ?OrderItem
|
||||
{
|
||||
return (new OrderItem(fn() => $this->parent->request('GET', sprintf('v1/orders/%s/items/%s', $this->parent->id, $id))))
|
||||
return (new OrderItem(fn() => $this->parent->anikeenId()
|
||||
->request('GET', sprintf('v1/orders/%s/items/%s', $this->parent->id, $id))))
|
||||
->setBillable($this->billable)
|
||||
->setParent($this->parent);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace Anikeen\Id\Resources;
|
||||
|
||||
use Anikeen\Id\Concerns\HasBillable;
|
||||
use Anikeen\Id\Result;
|
||||
use Throwable;
|
||||
|
||||
class Orders extends BaseCollection
|
||||
@@ -65,7 +64,8 @@ class Orders extends BaseCollection
|
||||
*/
|
||||
public function create(array $attributes = []): Order
|
||||
{
|
||||
return (new Order(fn() => $this->billable->request('POST', 'v1/orders', $attributes)))
|
||||
return (new Order(fn() => $this->billable->anikeenId()
|
||||
->request('POST', 'v1/orders', $attributes)))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
@@ -76,7 +76,8 @@ class Orders extends BaseCollection
|
||||
*/
|
||||
public function find(string $id): ?Order
|
||||
{
|
||||
return (new Order(fn() => $this->billable->request('GET', sprintf('v1/orders/%s', $id))))
|
||||
return (new Order(fn() => $this->billable->anikeenId()
|
||||
->request('GET', sprintf('v1/orders/%s', $id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
}
|
||||
@@ -37,7 +37,8 @@ class PaymentMethods extends BaseCollection
|
||||
public function defaultPaymentMethod(): PaymentMethod
|
||||
{
|
||||
if (!isset($this->defaultPaymentMethodCache)) {
|
||||
$this->defaultPaymentMethodCache = (new PaymentMethod(fn() => $this->billable->request('GET', 'v1/payment-methods/default')))
|
||||
$this->defaultPaymentMethodCache = (new PaymentMethod(fn() => $this->billable->anikeenId()
|
||||
->request('GET', 'v1/payment-methods/default')))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
@@ -46,10 +47,13 @@ class PaymentMethods extends BaseCollection
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function find(string $id): ?PaymentMethod
|
||||
{
|
||||
return (new PaymentMethod(fn() => $this->billable->request('GET', sprintf('v1/payment-methods/%s', $id))))
|
||||
return (new PaymentMethod(fn() => $this->billable->anikeenId()
|
||||
->request('GET', sprintf('v1/payment-methods/%s', $id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace Anikeen\Id\Resources;
|
||||
|
||||
use Anikeen\Id\Concerns\HasParent;
|
||||
use Anikeen\Id\Result;
|
||||
use Throwable;
|
||||
|
||||
class SshKeys extends BaseCollection
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace Anikeen\Id\Resources;
|
||||
|
||||
use Anikeen\Id\Concerns\HasBillable;
|
||||
use Anikeen\Id\Contracts\AppTokenRepository;
|
||||
use Throwable;
|
||||
|
||||
/**
|
||||
@@ -50,7 +51,8 @@ class Subscription extends BaseResource
|
||||
*/
|
||||
public function update(array $attributes): self
|
||||
{
|
||||
return (new self(fn() => $this->billable->request('PUT', sprintf('v1/subscriptions/%s', $this->id), $attributes)))
|
||||
return (new self(fn() => $this->billable->anikeenId()
|
||||
->request('PUT', sprintf('v1/subscriptions/%s', $this->id), $attributes)))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
@@ -61,7 +63,8 @@ class Subscription extends BaseResource
|
||||
*/
|
||||
public function checkout(): self
|
||||
{
|
||||
return (new self(fn() => $this->billable->request('PUT', sprintf('v1/subscriptions/%s/checkout', $this->id))))
|
||||
return (new self(fn() => $this->billable->anikeenId()
|
||||
->request('PUT', sprintf('v1/subscriptions/%s/checkout', $this->id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
@@ -76,7 +79,8 @@ class Subscription extends BaseResource
|
||||
'refund' => $refund,
|
||||
];
|
||||
|
||||
return (new self(fn() => $this->billable->request('PUT', sprintf('v1/subscriptions/%s/revoke', $this->id), $attributes)))
|
||||
return (new self(fn() => $this->billable->anikeenId()
|
||||
->request('PUT', sprintf('v1/subscriptions/%s/revoke', $this->id), $attributes)))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
@@ -87,7 +91,8 @@ class Subscription extends BaseResource
|
||||
*/
|
||||
public function pause(): self
|
||||
{
|
||||
return (new self(fn() => $this->billable->request('PUT', sprintf('v1/subscriptions/%s/pause', $this->id))))
|
||||
return (new self(fn() => $this->billable->anikeenId()
|
||||
->request('PUT', sprintf('v1/subscriptions/%s/pause', $this->id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
@@ -98,17 +103,8 @@ class Subscription extends BaseResource
|
||||
*/
|
||||
public function resume(): self
|
||||
{
|
||||
return (new self(fn() => $this->billable->request('PUT', sprintf('v1/subscriptions/%s/resume', $this->id))))
|
||||
return (new self(fn() => $this->billable->anikeenId()
|
||||
->request('PUT', sprintf('v1/subscriptions/%s/resume', $this->id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a given subscription from the current user.
|
||||
*
|
||||
* @throws Throwable
|
||||
*/
|
||||
public function delete(): bool
|
||||
{
|
||||
return $this->billable->request('DELETE', sprintf('v1/subscriptions/%s', $this->id))->success();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
namespace Anikeen\Id\Resources;
|
||||
|
||||
use Anikeen\Id\Concerns\HasBillable;
|
||||
use Anikeen\Id\Contracts\AppTokenRepository;
|
||||
use Anikeen\Id\Exceptions\ResourceException;
|
||||
use Throwable;
|
||||
|
||||
class Subscriptions extends BaseCollection
|
||||
@@ -38,16 +40,20 @@ class Subscriptions extends BaseCollection
|
||||
*/
|
||||
public function create(array $attributes): Subscription
|
||||
{
|
||||
return (new Subscription(fn() => $this->billable->request('POST', 'v1/subscriptions', $attributes)))
|
||||
return (new Subscription(fn() => $this->billable->anikeenId()
|
||||
->request('POST', 'v1/subscriptions', $attributes)))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @throws ResourceException
|
||||
*/
|
||||
public function find(string $id): ?Subscription
|
||||
{
|
||||
return (new Subscription(fn() => $this->billable->request('GET', sprintf('v1/subscriptions/%s', $id))))
|
||||
return (new Subscription(fn() => $this->billable->anikeenId()
|
||||
->request('GET', sprintf('v1/subscriptions/%s', $id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
namespace Anikeen\Id\Resources;
|
||||
|
||||
use Anikeen\Id\Concerns\HasBillable;
|
||||
use Anikeen\Id\Exceptions\ResourceException;
|
||||
use Throwable;
|
||||
|
||||
class Transactions extends BaseCollection
|
||||
{
|
||||
@@ -15,7 +13,8 @@ class Transactions extends BaseCollection
|
||||
*/
|
||||
public function find(string $id): ?Transaction
|
||||
{
|
||||
return (new Transaction(fn() => $this->billable->request('GET', sprintf('v1/transactions/%s', $id))))
|
||||
return (new Transaction(fn() => $this->billable->anikeenId()
|
||||
->request('GET', sprintf('v1/transactions/%s', $id))))
|
||||
->setBillable($this->billable);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user