Steam is a ruby gem (~1k LOC) designed to interoperate with Valve's Steam network.
It supports Steam Guard and CAPTCHAs.
Inspired by SteamKit and its javascript ports: Node-steam and SteamUser
- Allows interaction with the Steam network via the Steam client protocol (using reverse-engineered Steam client api) - check Steam::Client class
- It includes a class to work with Steam Web API (Steam::WebApi)
- Sending tradeoffers (check examples/send_offer.rb)
- Getting Steamcommunity market stats for item (Steam::Market)
- SteamID conversion (Steam::SteamID)
- Navigate into gem dir and build it:
gem build steam
- Require built gem in Gemfile
Check examples folder for details
You need to provide your Steam account credentials in examples/config/config.yml to actually run these examples.
- Web-Login (cookies) + mobile TOTP code generation
- class to interact with Web API
- Steam client protocol(protobuf)
- Extracting Protobuf definitions and Enums
- Websocket connection and package decoding
- Selecting best server to connect (closest and the least loaded)
- Subscribing to custom Protobuff messages
- Trading:
- Sending/canceling tradeoffer
- Accepting offers send to us
- Mobile-confirmation
- Getting counts of pending and new trade offers (not realtime, in TODO)
- Offer details, getting inventory
- Community market: in progress
- price_history (all items sold history)
- price overview (lowest price, volume, median calculated by steam )
- Account actions
- creation
- adding and confirming(via SMS) phone number
Some info about steam items: https://github.com/krelly/ruby-steam/wiki
Unofficial Steam Web API Documentation: https://lab.xpaw.me/steam_api_documentation.html