funpay-client
Unofficial async Rust client for FunPay marketplace. Authenticate via golden_key, receive real-time events for chats and orders.
Features
- Real-time polling for chats and orders
- Send messages to chats
- Edit offers (price, quantity, status)
- Configurable polling intervals, retry policies, and User-Agent
- Pluggable state storage (JSON file or in-memory)
- Async/await with Tokio
Installation
[]
= "0.2"
= { = "1", = ["rt-multi-thread", "macros"] }
Quick Start
use ;
async
Configuration
Use FunPayConfig builder for custom settings:
use ;
use Duration;
let config = builder
.user_agent
.polling_interval
.error_retry_delay
.event_channel_capacity
.state_storage_path
.retry_policy // base_ms, max_retries
.build;
let account = with_config;
With Proxy
use ;
// Simple proxy
let account = with_proxy;
// Proxy with custom config
let config = builder
.polling_interval
.build;
let account = with_proxy_and_config;
Events
| Event | Description |
|---|---|
InitialChat |
Chat loaded on startup |
ChatsListChanged |
Chat list updated |
LastChatMessageChanged |
New activity in chat |
NewMessage |
New message received |
InitialOrder |
Order loaded on startup |
OrdersListChanged |
Order counters changed |
NewOrder |
New order created |
OrderStatusChanged |
Order status changed |
Sending Messages
let sender = account.create_sender?;
sender.send_chat_message.await?;
Working with Offers
use OfferEditParams;
let sender = account.create_sender?;
// Get current offer params
let params = sender.get_offer_params.await?;
// Update offer price
let update = OfferEditParams ;
sender.edit_offer.await?;
// Get all my offers for a category
let offers = sender.get_my_offers.await?;
Custom Gateway
Implement FunpayGateway trait for custom HTTP handling:
use ;
use Arc;
let gateway: = new;
let account = with_gateway;
Custom State Storage
Implement StateStorage trait for custom persistence:
use StateStorage;
use async_trait;
use HashMap;
Configuration Defaults
| Parameter | Default |
|---|---|
base_url |
https://funpay.com |
user_agent |
Chrome 123 on Windows |
polling_interval |
1500ms |
error_retry_delay |
5s |
event_channel_capacity |
512 |
retry_base_ms |
20 |
max_retries |
3 |
redirect_limit |
10 |
Requirements
- Rust 1.84+
- Tokio 1.x