Add #![deny(clippy::unwrap_used, clippy::expect_used)] to 11 crates that
were missing it, and standardize 3 existing crates to deny both lints.
Test code is exempted via #![cfg_attr(test, allow(...))].
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace FIX-protocol-based integration tests with tests using real cTrader
types (ICMarketsConfig, TradingOrder, BrokerInterface). All 21 tests pass:
broker_failover (5), icmarkets_validation (10), order_lifecycle (6).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add rate limiter (50/s + 5/s historical), symbol mapper, order builders,
account queries, market data subscriptions, and high-level CTraderClient
that orchestrates the full connect/auth/symbol-load lifecycle.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
MessageDispatcher spawns a reader task that routes responses to pending
requests by clientMsgId (UUID + oneshot channels), and broadcasts
server-pushed events (executions, spots, errors) via tokio broadcast.
Handles connection closure with pending request cleanup.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
HTTP OAuth2 flow (auth code exchange + refresh) via reqwest, plus
protobuf-level two-phase auth (ApplicationAuth → AccountAuth) over
the TCP connection. Error extraction from OA error responses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CTraderConnection establishes TCP+TLS via tokio-native-tls, wraps in
framed codec, splits into shared sender + exclusive receiver, and
spawns a heartbeat task at configurable interval (default 10s).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CTraderCodec implements tokio_util Decoder+Encoder with 4-byte BE length
prefix framing. Handles partial frames, multiple frames in buffer, and
rejects oversized frames (16 MiB max). 5 unit tests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Downloads 4 proto files from spotware/openapi-proto-messages (MIT license),
compiles with prost-build, and adds payload-type constants + dispatch helpers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New workspace crate for cTrader Open API client (Protobuf over TCP+TLS).
Includes CTraderConfig, CTraderEnvironment, CTraderError, and RateLimitBucket types.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>