• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wboayue / rust-ibapi / 26529644247
92%

Build:
DEFAULT BRANCH: main
Ran 27 May 2026 06:11PM UTC
Jobs 1
Files 140
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

27 May 2026 06:08PM UTC coverage: 92.409% (+0.1%) from 92.262%
26529644247

push

github

web-flow
fundamental: add Client::fundamental_data API (#647)

* fundamental: add Client::fundamental_data API

Adds RequestFundamentalData support - one of the seven remaining
outgoing-message gaps tracked in plans/protobuf-migration.md.

Public surface:
- FundamentalData { data: String } - single XML payload
- FundamentalReportType (6 variants: ReportsFinSummary, ReportSnapshot,
  ReportRatios, ReportsFinStatements, RESC, CalendarReport)
- Client::fundamental_data(contract, report_type) - sync + async

Internals:
- Encoder builds FundamentalsDataRequest via shared encode_contract
- Decoder is proto-only via require_proto; message dispatch routes
  IncomingMessages::Error to Notice and unknown variants to UnexpectedResponse
- Mirrors the wsh_metadata one-shot pattern using
  request_helpers::one_shot_request_with_retry
- New Features::FUNDAMENTAL_DATA constant (server v40, trivially
  satisfied at floor 213; kept for parity with the C# reference)
- CancelFundamentalData encoder intentionally omitted - the one-shot
  helper drops the InternalSubscription naturally; no caller route
  exercises StreamDecoder::cancel_message for this API

Tests:
- sync/async round-trip + Notice propagation via MessageBusStub
- types_tests cover Display/FromStr round-trip + Err(Parse) on
  unknown/empty inputs
- integration tests (sync + async, #[ignore]) for ReportSnapshot +
  ReportRatios; require entitlement on the paper-trading account
- runnable examples for sync and async

* fundamental: register FundamentalData in request_id_index table

Smoke test against a live gateway exposed missing routing: TWS sends the
proto FundamentalData response (msg_id=51), but the dispatcher logged
"could not determine request id index for FundamentalData" and dropped
the message, hanging the subscription forever.

ResponseMessage::request_id() gates the proto-envelope decode on a
Some(_) lookup from request_id_index(), so a message type must appear
in that table even when only the proto path i... (continued)

123 of 126 new or added lines in 7 files covered. (97.62%)

19343 of 20932 relevant lines covered (92.41%)

26.89 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
87.5
src/fundamental/async.rs
1
93.33
src/fundamental/common/decoders.rs
1
85.71
src/fundamental/sync.rs
Jobs
ID Job ID Ran Files Coverage
1 26529644247.1 27 May 2026 06:11PM UTC 140
92.41
GitHub Action Run
Source Files on build 26529644247
  • Tree
  • List 140
  • Changed 4
  • Source Changed 4
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26529644247
  • ccb8b15d on github
  • Prev Build on main (#26485403992)
  • Next Build on main (#26530681925)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc