Releases: joaquinbejar/ig-client
v0.1.12
v0.1.11
Release Notes: Version 0.1.11 - Testing Expansion and Codebase Cleanup
Summary
Version 0.1.11 focuses on expanding unit test coverage, refining code consistency, and optimizing performance through targeted refactors. This release improves reliability by enhancing test infrastructure, clarifies code intent through cleanups, and tightens floating-point precision handling.
What's New
- Unit Tests for Core Services:
- Introduced unit tests for
account_service
,market_service
, andorder_service
, covering response structures, configuration endpoints, and order lifecycle. - Added mock HTTP client setup for isolated testing scenarios.
- Introduced unit tests for
- Expanded Coverage:
- Comprehensive test additions for
order
,parsing
, anddisplay
modules. - Coverage includes error handling, edge cases, and validation logic.
- Comprehensive test additions for
Enhancements
- Precision and Safety:
- Refined floating-point comparison logic in
display_tests
. - Rounded order sizes to two decimal places and defaulted
currency_code
toEUR
.
- Refined floating-point comparison logic in
- Code Cleanups:
- Standardized import ordering and comment language across modules.
- Removed unused
nanoid
dependency and trailing whitespace. - Improved logging message consistency and visibility modifiers in
PriceData
.
Bug Fixes
- Corrected a minor issue with
currency_code
assignment inorder.rs
. - Adjusted safety margin clamping logic in
config_tests.rs
for better accuracy.
Breaking Changes
- None in this release. All changes maintain backward compatibility.
Documentation Updates
- Minor typo corrections and standardized English in the README.
- Improved inline documentation and comment consistency across test modules.
Migration Notes
- No migration steps required. Users can safely upgrade without altering configurations or interfaces.
Acknowledgments
Thanks to Joaquin Bejar for comprehensive testing contributions, meticulous code refinement, and improved test infrastructure design.
Release Links
v0.1.10
Standardize comment language in `config_tests.rs`.
v0.1.9
Release Notes: Version 0.1.9 - Enhanced Option Orders and API Consistency
Summary
Version 0.1.9 focuses on enhancing the flexibility of option order APIs, improving code clarity, and unifying behavior across the client. This release also introduces a comprehensive example for creating and closing option orders, supporting better user onboarding and integration.
What's New
- New Example for Option Orders: Added a detailed example showcasing how to create and close option orders, simplifying learning and adoption.
Enhancements
- Refactored order-related APIs to improve flexibility and maintainability.
- Introduced utility methods and refined request structures to streamline option order workflows.
- Unified
USER_AGENT
usage across HTTP clients for consistent identification. - Simplified
TimeInForce
usage to reduce complexity in tests and API calls. - Cleaned up imports in
order_tests.rs
to improve code hygiene.
Bug Fixes
- No direct bug fixes included in this release, but the API refactors address potential maintainability and consistency issues.
Breaking Changes
- None. All enhancements are backward-compatible.
Documentation Updates
- Bumped
ig-client
dependency to version 0.1.8 in the README and other documentation references. - Included a comprehensive option order example to the examples directory, demonstrating key workflows.
Migration Notes
- No migration steps are required. Existing integrations remain fully compatible.
Release Links
v0.1.8
Refactor, Feature Enhancements, and Dependency Updates (v0.1.8)
Description
This pull request encompasses a series of updates and improvements to the project. These include enhancements to error handling and rate limiting, consolidation of parsing logic, the introduction of example scripts, and the standardization of dependency management. Additionally, the ig-client
dependency has been bumped to version 0.1.8
, and relevant documentation and examples have been updated accordingly.
Changes Made
- Rate Limiting: Added a
OnePerSecond
limiter to prevent request bursts and ensure API compliance. - Retry Logic: Implemented exponential backoff with jitter in
IgHttpClientImpl
to improve reliability under failure conditions. - Structured Logging: Replaced
println!
withinfo!
across examples for improved observability. - Parsing Refactor: Removed the
market_parser
module and consolidated logic intoparsing
, simplifying code maintenance. - New Examples: Introduced
get_market_details.rs
to fetch market data and updatedmarket_details.json
. - Code Clean-Up: Removed intermediate result saving and performed formatting standardization and error handling improvements.
- Workspace Dependencies: Migrated to workspace-based dependency declarations for maintainability and consistency.
- Version Bump: Incremented crate version to
0.1.8
and included thebenches
directory in the published package. - Documentation Update: Updated the README and example
Cargo.toml
files to reflect theig-client
version0.1.8
.
Testing
- Unit Testing: Existing unit tests passed successfully after changes.
- Manual Testing:
- Verified correct rate limiting and retry behavior in example scripts.
- Validated parsing and market detail fetching via the new examples.
- Regression Checks: Ensured no breaking changes were introduced during dependency and structural refactors.
Screenshots/Examples
examples/get_market_details.rs
: Demonstrates usage of the updated client with new rate limiting and retry capabilities.
Additional Notes
- The migration to workspace-based dependencies significantly reduces redundancy and simplifies version management.
- Further enhancements could include abstracting retry strategies for different use cases.
Checklist
- Code changes reviewed and tested.
- Documentation and examples updated.
- All tests passing.
- Version bumped to 0.1.8.
- Package includes benchmarks directory.
v0.1.6
Release Notes: Version 0.1.6 - Advanced Rate Limiting and API Reliability
Summary
This release focuses on improving API reliability and compliance through an advanced rate-limiting system. It includes robust error recovery, automatic backoff mechanisms, and better concurrency management. Additionally, the codebase has been cleaned and refactored for maintainability.
What's New
- Advanced Rate Limiting: Introduced a new rate-limiting mechanism featuring:
- Configurable safety margins to prevent hitting rate limits.
- Automatic backoff for handling server-imposed throttling.
- Improved error recovery for resilient API interaction.
Enhancements
- Refactored the rate limiter logic for greater clarity and flexibility.
- Introduced detailed metadata for rate limits to assist in debugging and monitoring.
- Improved concurrency handling to ensure smoother operation under load.
Documentation Updates
- Updated example scripts and tests to demonstrate the new rate-limiting features.
- Removed outdated entries from
market_table.json
to align with current system state.
Migration Notes
- No manual changes required. However, users are encouraged to review and adopt the new rate-limiting configurations for optimal API usage.
Release Links
v0.1.5
Release Notes: Version 0.1.5 - Working Orders and Enhanced Market Integration
Summary
Version 0.1.5 introduces critical enhancements for interacting with the IG Markets API, focusing on working order support, serialization utilities, and expanded market data capabilities. This release also includes comprehensive test coverage, code cleanups, and new example projects to support users in integrating and validating their workflows.
What's New
- Working Order Support: Added methods in
OrderService
to create and retrieve working orders, complete with new request/response models. - Serialization Utilities: Introduced dedicated modules to handle optional float, boolean, and string serialization/deserialization as per IG API requirements.
- Market Data Enhancements: Added support for batch market detail requests and introduced a
market_details.rs
example for fetching multiple EPICs.
Enhancements
- Improved deserialization in market data models to better support new fields like
updateTimeUTC
. - Enhanced
MarketService
with batch API request capabilities for more efficient data retrieval. - Refactored and reorganized test modules for maintainability and clarity.
- Added
update_time_utc
field to market test data for better alignment with UTC time standards.
Bug Fixes
- Removed deprecated modules and unused code in transport and utility areas to streamline the codebase.
- Eliminated outdated and redundant unit tests to reduce noise and improve test quality.
Breaking Changes
- Deprecated internal transport and utility modules have been removed. Ensure that any custom implementations or imports referencing these modules are updated accordingly.
Documentation Updates
- Introduced example project demonstrating usage of the
ig-client
andlightstreamer-rs
crates, including a detailedmarket_details.json
output. - Sample market search data for the German market included to assist in rapid prototyping and testing.
Migration Notes
- Users relying on removed transport/util modules must refactor to use updated public serialization interfaces.
- Ensure that working order-related integrations use the new methods in
OrderService
.
Release Links
v0.1.4
Release Notes: Version 0.1.4 – Unified Listener Model and Enhanced Test Coverage
Summary
This release focuses on architectural simplification and improved code quality. It introduces a generic Listener
structure to unify data update handling, reorganizes test structures for better coverage, and enhances documentation and code maintainability across services and utilities.
What's New
- Generic
Listener
Implementation: Unified handling of data updates (e.g., prices, trades, accounts) through a single, flexibleListener
struct. This replaces previously separate listener implementations. - New Example Scripts: Added usage examples demonstrating integration with Lightstreamer for both price and trade data updates.
- Docker Support: Introduced a Dockerfile for packaging the transaction fetch example.
Enhancements
- Refactored test structure into a modular format, improving clarity and scalability.
- Added utility functions for JSON serialization and transaction ID parsing.
- Introduced
parse_instrument_name
for structured extraction from instrument identifiers. - Updated WebSocket handling with fallback logic and robust error management.
- Cleaned up and modularized services, transaction handling, and WebSocket flows for better readability and reusability.
- Replaced individual service listeners with a unified
Listener
trait-based approach. - Switched logging from
println!
totracing
for structured and configurable output. - Reorganized service interfaces under a new
interfaces
directory for clearer separation of concerns.
Bug Fixes
- Removed obsolete test modules and unused examples to streamline the codebase.
- Eliminated redundant code in WebSocket client and transport layers.
- Improved resilience in date parsing with fallbacks to avoid runtime errors.
Breaking Changes
- Deprecated individual listener structs (
AccountListener
,PriceListener
) in favor of a singleListener
trait model. Users must update custom listener integrations accordingly. - Removed the legacy
IgTxClient
and all associated transaction-fetching logic. - Deleted obsolete modules including unused examples, mockito-based test files, and redundant imports.
Documentation Updates
- Significantly enhanced code documentation with comments for structs, enums, constants, and modules.
- Updated README with Lightstreamer integration examples and current version references.
- Documented new testing strategy, listener design, and Docker usage.
Migration Notes
- Ensure you refactor any custom listeners to adopt the new generic
Listener
pattern. - Review and adapt test code if relying on deprecated or relocated files.
- Update
ig-client
dependency references to version 0.1.4 as per the new standard. - For Docker-based deployments, leverage the newly added Dockerfile with the
tx_loop.rs
example.
Release Links
v0.1.3
Release Notes: Version 0.1.3 - Unified Listeners, Refined Services, and Robust Testing
Summary
This release introduces a major refactor that unifies event listener logic, enhances service structure, and significantly improves test coverage across the codebase. It also adds support for Lightstreamer-based real-time updates and streamlines the overall architecture for greater maintainability and performance.
What's New
- Generic
Listener
Implementation: Introduced a unifiedListener
structure replacing multiple specific listeners (e.g.,AccountListener
,PriceListener
), simplifying the architecture and enabling reusable update processing logic. - New Listeners: Added dedicated
PriceListener
andTradeListener
components for handling real-time market and trade data streams via Lightstreamer. - Example Scripts: Provided example scripts demonstrating integration with Lightstreamer for both price and trade data processing.
Enhancements
- Refactored listener modules to reduce duplication and improve consistency.
- Reorganized test structures into a modular format with improved coverage for
AccountService
,OrderService
, andMarketService
. - Updated and clarified English translations in code comments.
- Cleaned up and standardized import statements across the codebase.
- Introduced utility functions for JSON serialization/deserialization and enhanced transaction ID management.
Bug Fixes
- Removed obsolete test files and eliminated outdated code dependent on
mockito
. - Fixed minor formatting inconsistencies and dead imports to improve code clarity and maintainability.
Breaking Changes
- Legacy listener types (e.g.,
AccountListener
,PriceListener
) have been replaced by a genericListener
. Existing integrations using specific listener types may need updates to align with the new structure. - WebSocket client replaced with a Lightstreamer-based implementation. Any code depending on the previous WebSocket setup must migrate accordingly.
Documentation Updates
- Expanded README with updated version notes and integration details for Lightstreamer-based clients.
- Added bilingual documentation consistency for broader accessibility and user clarity.
Migration Notes
- Replace all instances of specific listeners with the new generic
Listener
type. - Update client instantiations to use Lightstreamer-based listeners for real-time data.
- Ensure tests and services align with the refactored test utilities and new listener architecture.
Release Links