PHPackages                             marmozist/steam-gifts - 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. [API Development](/categories/api)
4. /
5. marmozist/steam-gifts

ActiveLibrary[API Development](/categories/api)

marmozist/steam-gifts
=====================

PHP client for SteamGifts

1.1.0(6y ago)13MITPHPPHP ^7.4CI failing

Since Apr 4Pushed 3y ago1 watchersCompare

[ Source](https://github.com/marmozist/steam-gifts)[ Packagist](https://packagist.org/packages/marmozist/steam-gifts)[ RSS](/packages/marmozist-steam-gifts/feed)WikiDiscussions master Synced yesterday

READMEChangelog (2)Dependencies (19)Versions (3)Used By (0)

PHP Client for [![](https://camo.githubusercontent.com/995666c350c2104d9777613c270182c8fe2c7bb15f47291b777628932f03a021/68747470733a2f2f63646e2e737465616d67696674732e636f6d2f696d672f66617669636f6e2e69636f) SteamGifts](https://www.steamgifts.com/)
======================================================================================================================================================================================================================================================

[](#php-client-for--steamgifts)

[![Latest Version](https://camo.githubusercontent.com/87dfa06cdc8e72d5e1d27ab2993130d3e6f2d0777cc92e2049e276921f76f982/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6d61726d6f7a6973742f737465616d2d67696674732e7376673f7374796c653d666c61742d737175617265)](https://github.com/marmozist/steam-gifts/releases)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](https://github.com/marmozist/steam-gifts/blob/master/LICENSE)[![Repository Size](https://camo.githubusercontent.com/5b61769ac2e9f55219dd5adf79c4530babbcbed49bc4227e56b0848da8eed022/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7265706f2d73697a652f6d61726d6f7a6973742f737465616d2d67696674733f7374796c653d666c61742d737175617265)](https://github.com/marmozist/steam-gifts)[![Total Downloads](https://camo.githubusercontent.com/b99fde573b4e7d6c6232c068665a1fc06997901993e0652891200239a7c587a8/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d61726d6f7a6973742f737465616d2d67696674732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/marmozist/steam-gifts)

[![Build Status](https://camo.githubusercontent.com/a84fb28c0425e3bef231bc1a8685e06a1f01f2e824d902d217e6a0ae82e6682a/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f6d61726d6f7a6973742f737465616d2d67696674732f6d61737465722e7376673f7374796c653d666c61742d737175617265)](https://travis-ci.org/marmozist/steam-gifts)[![Coverage Status](https://camo.githubusercontent.com/b598e9d4a5b5ea8a16d50ccfaeaf8345ac45e20568d454fd81c8e866c6855da9/68747470733a2f2f696d672e736869656c64732e696f2f636f766572616c6c732f6769746875622f6d61726d6f7a6973742f737465616d2d67696674733f7374796c653d666c61742d737175617265)](https://coveralls.io/github/marmozist/steam-gifts?branch=master)[![Maintainability](https://camo.githubusercontent.com/8648905f36dbd25d6d9b37eb91b1e3fc3057bf2ea996d5bf25280940169444b2/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636c696d6174652f6d61696e7461696e6162696c6974792d70657263656e746167652f6d61726d6f7a6973742f737465616d2d67696674733f7374796c653d666c61742d737175617265)](https://codeclimate.com/github/marmozist/steam-gifts/maintainability)[![Dependencies](https://camo.githubusercontent.com/09e5dc405723f061059b18854e0670d928f22b81184f8a04ffeed23f53c92148/68747470733a2f2f696d672e736869656c64732e696f2f6c6962726172696573696f2f6769746875622f6d61726d6f7a6973742f737465616d2d67696674733f7374796c653d666c61742d737175617265)](https://libraries.io/github/marmozist/steam-gifts)

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

[](#installation)

Installation via [Composer](https://getcomposer.org/):

```
composer require marmozist/steam-gifts

```

Usage
-----

[](#usage)

#### Use factory to create client

[](#use-factory-to-create-client)

```
use Marmozist\SteamGifts\Application\ClientFactory;
use Marmozist\SteamGifts\Application\UserProvider\Factory\HttpUserProviderFactory;
use Marmozist\SteamGifts\Application\GiveawayProvider\Factory\HttpGiveawayProviderFactory;
use Marmozist\SteamGifts\Application\Utils\Http\HttpClientType;
use Marmozist\SteamGifts\Application\UserProvider\HttpUserProcessor\Factory\CompositeUserProcessorFactory;
use Marmozist\SteamGifts\Application\GiveawayProvider\HttpGiveawayProcessor\Factory\CompositeGiveawayProcessorFactory;
use Marmozist\SteamGifts\UseCase\GetUser;

$userProvider = HttpUserProviderFactory::createProvider(
    HttpClientType::Curl(),
    CompositeUserProcessorFactory::createProcessor()
);
$giveawayProvider = HttpGiveawayProviderFactory::createProvider(
    HttpClientType::Curl(),
    CompositeGiveawayProcessorFactory::createProcessor(new GetUser\Interactor($userProvider))
);

$client = ClientFactory::createClient($userProvider, $giveawayProvider);
```

You can to implement `UserProvider`/`GiveawayProvider` interfaces.

#### UserProvider implementations

[](#userprovider-implementations)

- [HttpUserProvider](#httpuserprovider)

##### HttpUserProvider

[](#httpuserprovider)

`HttpUserProvider` implements `UserProvider` via [HTTPlug](https://github.com/php-http/httplug).

using via **[Curl](https://github.com/php-http/curl-client)**

```
composer require php-http/curl-client

```

```
use Marmozist\SteamGifts\Application\UserProvider\Factory\HttpUserProviderFactory;
use Marmozist\SteamGifts\Application\Utils\Http\HttpClientType;
use Marmozist\SteamGifts\Application\UserProvider\HttpUserProcessor\Factory\CompositeUserProcessorFactory;

$userProvider = HttpUserProviderFactory::createProvider(
    HttpClientType::Curl(),
    CompositeUserProcessorFactory::createProcessor()
);
```

using via **[Guzzle](https://github.com/php-http/guzzle6-adapter)**

```
composer require php-http/guzzle6-adapter

```

```
use Marmozist\SteamGifts\Application\UserProvider\Factory\HttpUserProviderFactory;
use Marmozist\SteamGifts\Application\Utils\Http\HttpClientType;
use Marmozist\SteamGifts\Application\UserProvider\HttpUserProcessor\Factory\CompositeUserProcessorFactory;

$userProvider = HttpUserProviderFactory::createProvider(
    HttpClientType::Guzzle(),
    CompositeUserProcessorFactory::createProcessor()
);
```

using via **[Buzz](https://github.com/kriswallsmith/Buzz)**

```
composer require kriswallsmith/buzz

```

```
use Marmozist\SteamGifts\Application\UserProvider\Factory\HttpUserProviderFactory;
use Marmozist\SteamGifts\Application\Utils\Http\HttpClientType;
use Marmozist\SteamGifts\Application\UserProvider\HttpUserProcessor\Factory\CompositeUserProcessorFactory;

$userProvider = HttpUserProviderFactory::createProvider(
    HttpClientType::Buzz(),
    CompositeUserProcessorFactory::createProcessor()
);
```

using via your implementation

```
use Marmozist\SteamGifts\Application\UserProvider\Factory\HttpUserProviderFactory;
use Marmozist\SteamGifts\Application\Utils\Http\HttpClientType;
use Marmozist\SteamGifts\Application\UserProvider\HttpUserProcessor\Factory\CompositeUserProcessorFactory;
use Http\Client\HttpClient;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\RequestInterface;

/**
 * @method static self Custom()
 */
class ExtendedHttpClientType extends HttpClientType
{
    const Custom = 'Custom';
}

class CustomHttpClient implements HttpClient
{
    public function sendRequest(RequestInterface $request): ResponseInterface
    {
        // your logic of processing request
    }
}

class ExtendedHttpUserProviderFactory extends HttpUserProviderFactory
{
    protected static function getClient(HttpClientType $type): HttpClient
    {
        if ($type->equals(ExtendedHttpClientType::Custom())) {
            return new CustomHttpClient();
        }

        return parent::getClient($type);
    }
}

$userProvider = ExtendedHttpUserProviderFactory::createProvider(
    ExtendedHttpClientType::Custom(),
    CompositeUserProcessorFactory::createProcessor()
);
```

#### GiveawayProvider implementations

[](#giveawayprovider-implementations)

- [HttpGiveawayProvider](#httpgiveawayprovider)

##### HttpGiveawayProvider

[](#httpgiveawayprovider)

`HttpGiveawayProvider` implements `GiveawayProvider` via [HTTPlug](https://github.com/php-http/httplug).

using via **[Curl](https://github.com/php-http/curl-client)**

```
composer require php-http/curl-client

```

```
use Marmozist\SteamGifts\Application\GiveawayProvider\Factory\HttpGiveawayProviderFactory;
use Marmozist\SteamGifts\Application\Utils\Http\HttpClientType;
use Marmozist\SteamGifts\Application\GiveawayProvider\HttpGiveawayProcessor\Factory\CompositeGiveawayProcessorFactory;
use Marmozist\SteamGifts\UseCase\GetUser;

$giveawayProvider = HttpGiveawayProviderFactory::createProvider(
    HttpClientType::Curl(),
    CompositeGiveawayProcessorFactory::createProcessor(new GetUser\Interactor($userProvider))
);
```

using via **[Guzzle](https://github.com/php-http/guzzle6-adapter)**

```
composer require php-http/guzzle6-adapter

```

```
use Marmozist\SteamGifts\Application\GiveawayProvider\Factory\HttpGiveawayProviderFactory;
use Marmozist\SteamGifts\Application\Utils\Http\HttpClientType;
use Marmozist\SteamGifts\Application\GiveawayProvider\HttpGiveawayProcessor\Factory\CompositeGiveawayProcessorFactory;
use Marmozist\SteamGifts\UseCase\GetUser;

$giveawayProvider = HttpGiveawayProviderFactory::createProvider(
    HttpClientType::Guzzle(),
    CompositeGiveawayProcessorFactory::createProcessor(new GetUser\Interactor($userProvider))
);
```

using via **[Buzz](https://github.com/kriswallsmith/Buzz)**

```
composer require kriswallsmith/buzz

```

```
use Marmozist\SteamGifts\Application\GiveawayProvider\Factory\HttpGiveawayProviderFactory;
use Marmozist\SteamGifts\Application\Utils\Http\HttpClientType;
use Marmozist\SteamGifts\Application\GiveawayProvider\HttpGiveawayProcessor\Factory\CompositeGiveawayProcessorFactory;
use Marmozist\SteamGifts\UseCase\GetUser;

$giveawayProvider = HttpGiveawayProviderFactory::createProvider(
    HttpClientType::Buzz(),
    CompositeGiveawayProcessorFactory::createProcessor(new GetUser\Interactor($userProvider))
);
```

using via your implementation

```
use Marmozist\SteamGifts\Application\GiveawayProvider\Factory\HttpGiveawayProviderFactory;
use Marmozist\SteamGifts\Application\Utils\Http\HttpClientType;
use Marmozist\SteamGifts\Application\GiveawayProvider\HttpGiveawayProcessor\Factory\CompositeGiveawayProcessorFactory;
use Http\Client\HttpClient;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\RequestInterface;
use Marmozist\SteamGifts\UseCase\GetUser;

/**
 * @method static self Custom()
 */
class ExtendedHttpClientType extends HttpClientType
{
    const Custom = 'Custom';
}

class CustomHttpClient implements HttpClient
{
    public function sendRequest(RequestInterface $request): ResponseInterface
    {
        // your logic of processing request
    }
}

class ExtendedHttpGiveawayProviderFactory extends HttpGiveawayProviderFactory
{
    protected static function getClient(HttpClientType $type): HttpClient
    {
        if ($type->equals(ExtendedHttpClientType::Custom())) {
            return new CustomHttpClient();
        }

        return parent::getClient($type);
    }
}

$giveawayProvider = ExtendedHttpGiveawayProviderFactory::createProvider(
    ExtendedHttpClientType::Custom(),
    CompositeGiveawayProcessorFactory::createProcessor(new GetUser\Interactor($userProvider))
);
```

#### Client methods

[](#client-methods)

- [GetUser](#getuser)
- [GetUserList](#getuserlist)
- [GetGiveaway](#getgiveaway)
- [GetGiveawayList](#getgiveawaylist)

##### GetUser

[](#getuser)

e.g.

```
$user = $client->getUser('Gotman');

if (!$user) {
    throw new \Exception('User not found');
}

echo 'Name: '.$user->getName().PHP_EOL;
echo 'Role: '.$user->getRole()->getValue().PHP_EOL;
echo 'Last Online: '.$user->getLastOnlineAt()->format('Y-m-d H:i:s').PHP_EOL;
echo 'Registered: '.$user->getRegisteredAt()->format('Y-m-d H:i:s').PHP_EOL;
echo 'Avatar: '.$user->getAvatarUrl().PHP_EOL;
echo 'Steam: '.$user->getSteamLink().PHP_EOL;
echo 'Comments: '.$user->getComments().PHP_EOL;
echo 'Entered: '.$user->getEnteredGiveaways().PHP_EOL;
echo 'Gifts Won: '.$user->getGiftsWon().PHP_EOL;
echo 'Gifts Sent: '.$user->getGiftsSent().PHP_EOL;
echo 'Contributor Level: '.$user->getContributorLevel().PHP_EOL;
```

##### GetUserList

[](#getuserlist)

```
$userList = $client->getUserList(['Gotman', 'Batman']);
$user = $userList->findUser('Gotman');

echo 'Entered Giveaways: '.$user->getEnteredGiveaways().PHP_EOL;
```

##### GetGiveaway

[](#getgiveaway)

e.g.

```
$giveaway = $client->getGiveaway('O8NIm');

if (!$giveaway) {
    throw new \Exception('Giveaway not found');
}

echo 'Id: '.$giveaway->getId().PHP_EOL;
echo 'Name: '.$giveaway->getName().PHP_EOL;
echo 'Creator: '.$giveaway->getCreator()->getName().PHP_EOL;
echo 'Created at: '.$giveaway->getCreatedAt()->format('Y-m-d H:i:s').PHP_EOL;
echo 'Finished at: '.$giveaway->getFinishedAt()->format('Y-m-d H:i:s').PHP_EOL;
echo 'Steam: '.$giveaway->getSteamLink().PHP_EOL;
echo 'Cost: '.$giveaway->getCost().PHP_EOL;
echo 'Copies: '.$giveaway->getCopies().PHP_EOL;
echo 'Level: '.$giveaway->getLevel().PHP_EOL;
echo 'Entries: '.$giveaway->getEntries().PHP_EOL;
echo 'Comments: '.$giveaway->getComments().PHP_EOL;
echo 'Region restricted: '.(int)$giveaway->isRegionRestricted().PHP_EOL;
echo 'Group: '.(int)$giveaway->isGroup().PHP_EOL;
echo 'Invite only: '.(int)$giveaway->isInviteOnly().PHP_EOL;
echo 'Whitelist: '.(int)$giveaway->isWhitelist().PHP_EOL;
```

##### GetGiveawayList

[](#getgiveawaylist)

```
$giveawayList = $client->getGiveawayList(['O8NIm', '1BWVk']);
$giveaway = $giveawayList->findGiveaway('O8NIm');

echo 'Name: '.$giveaway->getName().PHP_EOL;
```

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity57

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 ~13 days

Total

2

Last Release

2215d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/647718609d9b4d4a70a161daac38afe026385cf53a31be53d0b709d515c4eced?d=identicon)[progotman](/maintainers/progotman)

---

Top Contributors

[![progotman](https://avatars.githubusercontent.com/u/6221778?v=4)](https://github.com/progotman "progotman (21 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/marmozist-steam-gifts/health.svg)

```
[![Health](https://phpackages.com/badges/marmozist-steam-gifts/health.svg)](https://phpackages.com/packages/marmozist-steam-gifts)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[phpro/http-tools

HTTP tools for developing more consistent HTTP implementations.

28137.8k](/packages/phpro-http-tools)[paddlehq/paddle-php-sdk

Paddle's PHP SDK for Paddle Billing.

53301.7k](/packages/paddlehq-paddle-php-sdk)[brd6/notion-sdk-php

Notion SDK for PHP

5918.0k](/packages/brd6-notion-sdk-php)[apigee/apigee-client-php

Client library for connecting to the Apigee Edge API.

27558.7k3](/packages/apigee-apigee-client-php)[php-heroku-client/php-heroku-client

A PHP client for the Heroku Platform API

24404.8k4](/packages/php-heroku-client-php-heroku-client)

PHPackages © 2026

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