PHPackages                             jooservices/client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. jooservices/client

ActiveLibrary[HTTP &amp; Networking](/categories/http)

jooservices/client
==================

A robust, layered HTTP Client wrapper for JOOservices

1.1.0(2mo ago)0181MITPHPPHP ^8.5CI passing

Since Jan 31Pushed 2mo agoCompare

[ Source](https://github.com/jooservices/client)[ Packagist](https://packagist.org/packages/jooservices/client)[ RSS](/packages/jooservices-client/feed)WikiDiscussions develop Synced 1mo ago

READMEChangelog (3)Dependencies (16)Versions (5)Used By (1)

JOOservices HTTP Client
=======================

[](#jooservices-http-client)

A robust, layered HTTP Client wrapper designed for extensibility, strict typing, and high performance. Built with a "Clean Architecture" approach, decoupling the business logic from the underlying Guzzle transport.

[![PHP Version](https://camo.githubusercontent.com/3fe1b9f28029d16b30242054cf5a6fe168f12cee4d294ec395f5bca64b874909/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344382e352d626c7565)](https://php.net/)[![License](https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e)](LICENSE)

Features
--------

[](#features)

- **Strictly Typed**: Configuration object (`ClientConfig`) ensures type safety before requests start.
- **Layered Architecture**: Adapters (Guzzle) are isolated from Core Logic.
- **Resilience**: Built-in Retry (Backoff/Jitter) and Circuit Breaker.
- **Async &amp; Concurrency**: Support for non-blocking requests (`getAsync`) and Batch Processing.
- **Observability**: detailed Logging and PSR-16 Caching integration.
- **Performance**: &lt; 10μs overhead per request.

Installation
------------

[](#installation)

```
composer require jooservices/client
```

Quick Start
-----------

[](#quick-start)

### Basic Usage

[](#basic-usage)

Use the **ClientBuilder** to create an instance.

```
use JOOservices\Client\Client\ClientBuilder;

$client = ClientBuilder::create()
    ->withBaseUri('https://api.example.com')
    ->withTimeout(5)
    ->withHeader('Authorization', 'Bearer token')
    ->build();

$response = $client->get('/users/1');

echo $response->status(); // 200
print_r($response->json()); // ['id' => 1, ...]
```

### Async Requests &amp; Batching

[](#async-requests--batching)

```
// Single Async Request
$promise = $client->getAsync('/users/1');
$response = $promise->wait();

// Batch Processing (Concurrent)
$results = $client->batch([
    'user1' => fn() => $client->getAsync('/users/1'),
    'user2' => fn() => $client->getAsync('/users/2'),
]);

print_r($results['user1']->json());
```

Advanced Configuration
----------------------

[](#advanced-configuration)

### Resilience (Retry &amp; Circuit Breaker)

[](#resilience-retry--circuit-breaker)

```
use JOOservices\Client\Resilience\RetryConfig;
use JOOservices\Client\Resilience\CircuitBreakerConfig;

$client = ClientBuilder::create()
    ->withRetry(new RetryConfig(
        maxAttempts: 3,
        baseDelayMs: 100
    ))
    ->withCircuitBreaker(new CircuitBreakerConfig(
        failureThreshold: 5,
        recoveryTimeoutMs: 10000
    ))
    ->build();
```

### Logging &amp; Caching

[](#logging--caching)

```
use JOOservices\Client\Logging\MonologFactory;
use JOOservices\Client\Cache\FilesystemCache;

$logger = MonologFactory::createDaily('my-app', __DIR__ . '/logs');
$cache = new FilesystemCache(__DIR__ . '/cache');

$client = ClientBuilder::create()
    ->withLogger($logger, logBodies: true)
    ->withCache($cache, defaultTtl: 3600)
    ->build();
```

Quality Assurance
-----------------

[](#quality-assurance)

We use strict static analysis and testing.

```
composer quality
```

This runs:

- **Pint**: Code Style Fixer
- **PHPStan**: Static Analysis (Level 9)
- **PHPUnit**: Unit, Feature &amp; Integration Tests (with 98% coverage gate)
- **PHPBench**: Performance Analysis

Docker Development
------------------

[](#docker-development)

If PHP is not installed locally, run everything in Docker.

```
docker compose up -d --build mongodb
docker compose run --rm php composer install
docker compose run --rm php composer test
```

For live network integration tests (real sites), run:

```
docker compose run --rm -e JOOCLIENT_RUN_LIVE_NETWORK_TESTS=1 php \
    vendor/bin/phpunit tests/Feature/Logging/RealSiteIpLoggingTest.php
```

This test hits:

- `https://httpbin.org/get`
- `https://example.com`
- `https://google.com`

Contributing
------------

[](#contributing)

See [CONTRIBUTING.md](CONTRIBUTING.md) for details.

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance88

Actively maintained with recent releases

Popularity8

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~19 days

Total

3

Last Release

61d ago

Major Versions

0.5.0 → 1.0.02026-03-08

### Community

Maintainers

![](https://www.gravatar.com/avatar/a4ff5b64fb70623808dbe8a32cabfd3add7db11ee382893a437c2660ba9d9f55?d=identicon)[jooservices](/maintainers/jooservices)

---

Top Contributors

[![soulevilx](https://avatars.githubusercontent.com/u/2688707?v=4)](https://github.com/soulevilx "soulevilx (32 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/jooservices-client/health.svg)

```
[![Health](https://phpackages.com/badges/jooservices-client/health.svg)](https://phpackages.com/packages/jooservices-client)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.6k509.9M17.0k](/packages/laravel-framework)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[nelmio/api-doc-bundle

Generates documentation for your REST API from attributes

2.3k63.6M232](/packages/nelmio-api-doc-bundle)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[shopify/shopify-api

Shopify API Library for PHP

4634.8M16](/packages/shopify-shopify-api)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
