winglet/client

Generic HTTP client infrastructure for Winglet and compatible microservices.

Maintainers

Package info

bitbucket.org/eventteri/wingletclient

pkg:composer/winglet/client

Statistics

Installs: 36

Dependents: 0

Suggesters: 0

v0.4 2026-04-02 08:43 UTC

This package is auto-updated.

Last update: 2026-04-02 08:45:41 UTC


README

winglet/client is the generic HTTP client infrastructure package for Winglet and compatible PHP microservice environments.

This package contains only the reusable technical client layer:

  • target configuration loading
  • authentication modes
  • token caching
  • retry and correlation-id middleware
  • PSR-7 / PSR-17 / PSR-18 compatible HTTP handling
  • optional Winglet bridge for reading config and inbound bearer tokens from a Winglet runtime

This package does not contain service-specific clients such as AuthClient or IdentityClient. Those should live in their own packages and depend on winglet/client.

Included namespaces

  • Winglet\Client\Core\...
  • Winglet\Client\Bridge\Winglet\...

Typical usage

Generic client outside Winglet

use Winglet\Client\Core\Config\ArrayTargetConfigRepository;
use Winglet\Client\Core\Factory\ClientFactory;

$repo = new ArrayTargetConfigRepository([
    'billing' => [
        'base_url' => 'https://billing.example.test',
        'auth' => [
            'mode' => 'static_bearer',
            'static_bearer' => 'example-token',
        ],
    ],
]);

$factory = new ClientFactory($repo, __DIR__ . '/var/cache/clients');
$billing = $factory->create('billing');

$response = $billing->getJson('/status');

Generic client inside Winglet

use Winglet\Client\Bridge\Winglet\WingletClientFactory;

$factory = new WingletClientFactory($appContext);
$authClient = $factory->client('auth');
$result = $authClient->getJson('/authorization/effective?identityId=123');

Authentication modes

Supported auth.mode values:

  • none
  • static_bearer
  • service_token
  • identity_session
  • api_key
  • mtls

Service-specific clients

Service-specific clients should be implemented in separate packages, for example:

  • winglet/auth-client
  • winglet/identity-client
  • winglet/subscription-client

A sample skeleton is included under examples/skeleton-client.

Development

composer install
composer run-script test