HTTP REST API adapter for Polysource — admin Stripe, GitHub, internal microservices, any external REST API you operate but don't own the schema of.
Part of the Polysource monorepo. MIT-licensed.
HttpDataSource— implementsWritableDataSourceInterfaceover SymfonyHttpClientInterface.PaginationStrategyInterface— pluggable pagination protocol with two built-in implementations:PageNumberPaginationStrategy—?page=Nstyle (Stripe-like)CursorPaginationStrategy— opaque cursor in response (GitHub-like)
defaultHeadersconstructor arg for injecting auth headers (Bearer tokens, API keys).HttpResource— non-final convenience base.- Tested with Symfony's
MockHttpClientso no live API calls in CI.
composer require polysource/adapter-http symfony/http-clientRegister the bundle:
return [
Polysource\Adapter\Http\PolysourceAdapterHttpBundle::class => ['all' => true],
];For an API that paginates in an unusual way (link headers, X-Pagination, RFC 5988…), implement PaginationStrategyInterface (2 methods):
final class LinkHeaderPaginationStrategy implements PaginationStrategyInterface
{
/** @return array<string, scalar|list<scalar>> query params to add to the request URI */
public function buildQueryParams(DataQuery $query): array { /* … */ }
/** @return array{items: list<array<string, mixed>>, total: ?int, nextCursor: ?string, prevCursor: ?string} */
public function parseResponse(array $body, array $headers): array { /* parse the Link header */ }
}Inject into HttpDataSource. No fork needed. See extensibility map.