fkrzski / laravel-steam-api-sdk
Laravel bridge for fkrzski/php-steam-api-sdk — service provider, Steam facade and test fakes for the Steam Web API.
Fund package maintenance!
Requires
- php: ^8.5.0
- fkrzski/php-steam-api-sdk: ^0.2
- illuminate/contracts: ^13.0
- illuminate/support: ^13.0
- saloonphp/saloon: ^4.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.29.1
- orchestra/testbench: ^11.0
- pestphp/pest: ^4.0.0
- pestphp/pest-plugin-type-coverage: ^4.0.0
- rector/rector: ^2.4.2
- symfony/var-dumper: ^8.0.8
This package is auto-updated.
Last update: 2026-06-11 05:50:41 UTC
README
Laravel bridge for fkrzski/php-steam-api-sdk. Ships a service provider, a Steam facade and a Steam::fake() test helper so you can talk to the Steam Web API the Laravel way.
- Auto-discovered
SteamConnectorsingleton, Octane-safe. - Rate-limit budget shared across processes through the Laravel cache store.
- Fluent
Steamfacade with first-class request helpers. - One-liner test fakes via Saloon's
MockClient.
Requirements
- PHP 8.5+
- Laravel 13+
Installation
composer require fkrzski/laravel-steam-api-sdk
The service provider and Steam facade are auto-discovered. Publish the config to override defaults:
php artisan vendor:publish --tag=steam-api-config
Set your Steam Web API key in .env:
STEAM_API_KEY=your-steam-web-api-key
Usage
use Fkrzski\LaravelSteamApiSdk\Facades\Steam; use Fkrzski\SteamApiSdk\ValueObjects\SteamId; $id = SteamId::fromSteamId64('76561198000000000'); $summaries = Steam::playerSummaries([$id]); $library = Steam::ownedGames($id, appIdsFilter: [381210]); $stats = Steam::userStatsForGame($id, appId: 381210); $achievements = Steam::playerAchievements($id, appId: 381210); $resolvedId = Steam::resolveVanityUrl('gabelogannewell');
DTOs, the SteamId value object and the exception hierarchy all come from the underlying SDK — see its README for the full surface.
Concurrent requests
Use pool() to fan out several requests at once:
use Fkrzski\LaravelSteamApiSdk\Facades\Steam; use Fkrzski\SteamApiSdk\Http\Requests\GetOwnedGamesRequest; use Fkrzski\SteamApiSdk\Http\Requests\GetPlayerSummariesRequest; use Saloon\Http\Response; Steam::pool( requests: [ new GetOwnedGamesRequest($id, [381210]), new GetPlayerSummariesRequest([$id]), ], concurrency: 2, responseHandler: fn (Response $response) => /* ... */, )->send()->wait();
Escape hatch
Need the raw connector or a custom request? Reach for it directly:
Steam::connector(); // the underlying SteamConnector Steam::send($customRequest); // any Saloon Request
Testing
Steam::fake() attaches a Saloon MockClient to the singleton connector and returns it for assertions:
use Fkrzski\LaravelSteamApiSdk\Facades\Steam; use Fkrzski\SteamApiSdk\Http\Requests\GetPlayerSummariesRequest; use Saloon\Http\Faking\MockResponse; $mock = Steam::fake([ GetPlayerSummariesRequest::class => MockResponse::make([ 'response' => ['players' => [/* ... */]], ]), ]); // ... exercise code that calls the Steam API ... $mock->assertSent(GetPlayerSummariesRequest::class);
License
MIT. See LICENSE.md.
