PHP code example of stellarwp / licensing-api-client-guzzle
1. Go to this page and download the library: Download stellarwp/licensing-api-client-guzzle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
stellarwp / licensing-api-client-guzzle example snippets
declare(strict_types=1);
namespace MyApp\Providers;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\HttpFactory;
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;
use LiquidWeb\LicensingApiClient\Api;
use LiquidWeb\LicensingApiClient\Config;
use LiquidWeb\LicensingApiClient\Contracts\LicensingClientInterface;
use LiquidWeb\LicensingApiClient\Http\ApiVersion;
use LiquidWeb\LicensingApiClient\Http\AuthContext;
use LiquidWeb\LicensingApiClient\Http\AuthState;
use LiquidWeb\LicensingApiClient\Http\RequestExecutor;
use lucatume\DI52\ServiceProvider;
use MyApp\Support\CurrentRequestTraceParent;
final class LicensingApiProvider extends ServiceProvider
{
public function register(): void
{
$this->container->singleton(Client::class);
$this->container->singleton(HttpFactory::class);
$this->container->when(RequestExecutor::class)
->needs(ClientInterface::class)
->give(static fn( $c ): ClientInterface => $c->get(Client::class));
$this->container->bind(
RequestFactoryInterface::class,
static fn( $c ): RequestFactoryInterface => $c->get(HttpFactory::class)
);
$this->container->bind(
StreamFactoryInterface::class,
static fn( $c ): StreamFactoryInterface => $c->get(HttpFactory::class)
);
$this->container->singleton(
Config::class,
static function (): Config {
return new Config(
'https://licensing.example.com',
null, // Pass a token if you plan to make authenticated requests.
'my-app/1.0.0' // Your client user agent.
);
}
);
$this->container->singleton(
AuthState::class,
static fn( $c ): AuthState => new AuthState(
new AuthContext(),
$c->get(Config::class)->configuredToken
)
);
$this->container->singleton(
ApiVersion::class,
static fn(): ApiVersion => ApiVersion::default()
);
$this->container->singleton(CurrentRequestTraceParent::class);
$this->container->singleton(Api::class);
$this->container->bind(
LicensingClientInterface::class,
static fn( $c ): LicensingClientInterface => $c
->get(Api::class)
->withTraceParent($c->get(CurrentRequestTraceParent::class)->traceParent())
);
}
}
declare(strict_types=1);
namespace MyApp\Support;
use LiquidWeb\LicensingApiClient\Tracing\TraceParent;
final class CurrentRequestTraceParent
{
private TraceParent $traceParent;
public function __construct()
{
$this->traceParent = TraceParent::generate();
}
public function traceParent(): TraceParent
{
return $this->traceParent;
}
}
declare(strict_types=1);
use LiquidWeb\LicensingApiClient\Tracing\TraceContext;
use LiquidWeb\LicensingApiClient\Tracing\TraceParent;
$traceContext = TraceContext::fromValues(
TraceParent::fromString($incomingTraceparent),
$incomingTracestate ?? null
);
$api = $container
->get(Api::class)
->withTraceContext($traceContext);
use LiquidWeb\LicensingApiClient\Exceptions\Contracts\ApiErrorExceptionInterface;
use LiquidWeb\LicensingApiClient\Exceptions\NotFoundException;
use LiquidWeb\LicensingApiClient\Exceptions\ValidationException;
try {
$catalog = $api->products()->catalog('LWSW-8H9F-5UKA-VR3B-D7SQ-BP9N');
$validation = $api->licenses()->validate(
'LWSW-8H9F-5UKA-VR3B-D7SQ-BP9N',
['kadence', 'learndash'],
'customer-site.com'
);
$balances = $api->withConfiguredToken()->credits()->balance(
'LWSW-8H9F-5UKA-VR3B-D7SQ-BP9N',
'customer-site.com'
);
if ($catalog->products->isCapabilityValid('kadence', 'blocks')) {
// ...
}
if ($validation->products->isCapabilityValid('learndash', 'blocks')) {
// ...
}
} catch (NotFoundException $e) {
// Return the API message when the requested record does not exist.
return [
'success' => false,
'message' => $e->getMessage(),
];
} catch (ValidationException $e) {
// Return the validation message and log the details for debugging.
$this->logger->warning('Licensing validation failed.', [
'message' => $e->getMessage(),
'code' => $e->errorCode(),
]);
return [
'success' => false,
'message' => $e->getMessage(),
];
} catch (ApiErrorExceptionInterface $e) {
// Log unexpected API-declared errors and return a generic failure message.
$this->logger->error('Licensing API request failed.', [
'status' => $e->getResponse()->getStatusCode(),
'code' => $e->errorCode(),
'message' => $e->getMessage(),
]);
return [
'success' => false,
'message' => 'We could not complete the licensing request right now. Please try again later.',
];
}
declare(strict_types=1);
use GuzzleHttp\Client;
use LiquidWeb\LicensingApiClient\Config;
use LiquidWeb\LicensingApiClientGuzzle\GuzzleApiFactory;
$api = (new GuzzleApiFactory(
new Client()
))->make(new Config(
'https://licensing.example.com',
null,
'my-app/1.0.0' // Your client user agent.
));
declare(strict_types=1);
use GuzzleHttp\Client;
use LiquidWeb\LicensingApiClient\Config;
use LiquidWeb\LicensingApiClientGuzzle\GuzzleApiFactory;
$api = (new GuzzleApiFactory(
new Client()
))->make(new Config(
'https://licensing.example.com',
'pk_test_your_token_here',
'portal/1.0.0' // Your client user agent.
));
$trustedApi = $api->withConfiguredToken();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.