Skip to content

Commit bff029e

Browse files
committed
feat: rates module for exchange rate APIs
1 parent cb91ed4 commit bff029e

File tree

22 files changed

+229
-180
lines changed

22 files changed

+229
-180
lines changed

Cargo.lock

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ members = [
1111
"./crates/interledger-ildcp",
1212
"./crates/interledger-packet",
1313
"./crates/interledger-router",
14+
"./crates/interledger-rates",
1415
"./crates/interledger-service",
1516
"./crates/interledger-service-util",
1617
"./crates/interledger-settlement",

crates/ilp-node/src/node.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@ use interledger::{
3838
ildcp::IldcpService,
3939
packet::Address,
4040
packet::{ErrorCode, RejectBuilder},
41+
rates::{ExchangeRateFetcher, ExchangeRateStore},
4142
router::{Router, RouterStore},
4243
service::{
4344
outgoing_service_fn, Account as AccountTrait, AccountStore, AddressStore, OutgoingRequest,
4445
Username,
4546
},
4647
service_util::{
47-
BalanceStore, EchoService, ExchangeRateFetcher, ExchangeRateService, ExchangeRateStore,
48-
ExpiryShortenerService, MaxPacketAmountService, RateLimitService, RateLimitStore,
49-
ValidatorService,
48+
BalanceStore, EchoService, ExchangeRateService, ExpiryShortenerService,
49+
MaxPacketAmountService, RateLimitService, RateLimitStore, ValidatorService,
5050
},
5151
settlement::{
5252
api::{create_settlements_filter, SettlementMessageService},
@@ -74,7 +74,7 @@ use crate::redis_store::*;
7474
use interledger::service_util::BalanceService;
7575

7676
#[doc(hidden)]
77-
pub use interledger::service_util::ExchangeRateProvider;
77+
pub use interledger::rates::ExchangeRateProvider;
7878

7979
static DEFAULT_ILP_ADDRESS: Lazy<Address> = Lazy::new(|| Address::from_str("local.host").unwrap());
8080

crates/interledger-api/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ repository = "https://github.com/interledger-rs/interledger-rs"
1111
interledger-packet = { path = "../interledger-packet", version = "^0.4.0", default-features = false }
1212
interledger-http = { path = "../interledger-http", version = "^0.4.0", default-features = false }
1313
interledger-ildcp = { path = "../interledger-ildcp", version = "^0.4.0", default-features = false }
14+
interledger-rates = { path = "../interledger-rates", version = "^0.4.0", default-features = false }
1415
interledger-router = { path = "../interledger-router", version = "^0.4.0", default-features = false }
1516
interledger-service = { path = "../interledger-service", version = "^0.4.0", default-features = false }
1617
interledger-service-util = { path = "../interledger-service-util", version = "^0.4.0", default-features = false }

crates/interledger-api/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@ use interledger_ccp::CcpRoutingAccount;
55
use interledger_errors::NodeStoreError;
66
use interledger_http::{HttpAccount, HttpStore};
77
use interledger_packet::Address;
8+
use interledger_rates::ExchangeRateStore;
89
use interledger_router::RouterStore;
910
use interledger_service::{
1011
Account, AccountStore, AddressStore, IncomingService, OutgoingService, Username,
1112
};
12-
use interledger_service_util::{BalanceStore, ExchangeRateStore};
13+
use interledger_service_util::BalanceStore;
1314
use interledger_settlement::core::types::{SettlementAccount, SettlementStore};
1415
use interledger_stream::StreamNotificationsStore;
1516
use secrecy::SecretString;

crates/interledger-api/src/routes/accounts.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@ use interledger_errors::*;
77
use interledger_http::{deserialize_json, HttpAccount, HttpStore};
88
use interledger_ildcp::IldcpRequest;
99
use interledger_ildcp::IldcpResponse;
10+
use interledger_rates::ExchangeRateStore;
1011
use interledger_router::RouterStore;
1112
use interledger_service::{
1213
Account, AccountStore, AddressStore, IncomingService, OutgoingRequest, OutgoingService,
1314
Username,
1415
};
15-
use interledger_service_util::{BalanceStore, ExchangeRateStore};
16+
use interledger_service_util::BalanceStore;
1617
use interledger_settlement::core::{types::SettlementAccount, SettlementClient};
1718
use interledger_spsp::{pay, SpspResponder};
1819
use interledger_stream::{PaymentNotification, StreamNotificationsStore};

crates/interledger-api/src/routes/node_settings.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use futures::TryFutureExt;
44
use interledger_errors::*;
55
use interledger_http::{deserialize_json, HttpAccount};
66
use interledger_packet::Address;
7+
use interledger_rates::ExchangeRateStore;
78
use interledger_router::RouterStore;
89
use interledger_service::{Account, AccountStore, AddressStore, Username};
910
use interledger_service_util::ExchangeRateStore;

crates/interledger-api/src/routes/test_helpers.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ use interledger_ccp::{CcpRoutingAccount, RoutingRelation};
1111
use interledger_errors::*;
1212
use interledger_http::{HttpAccount, HttpStore};
1313
use interledger_packet::{Address, ErrorCode, FulfillBuilder, RejectBuilder};
14+
use interledger_rates::ExchangeRateStore;
1415
use interledger_router::RouterStore;
1516
use interledger_service::{
1617
incoming_service_fn, outgoing_service_fn, Account, AccountStore, AddressStore, Username,
1718
};
18-
use interledger_service_util::{BalanceStore, ExchangeRateStore};
19+
use interledger_service_util::BalanceStore;
1920
use interledger_settlement::core::types::{SettlementAccount, SettlementEngineDetails};
2021
use interledger_stream::{PaymentNotification, StreamNotificationsStore};
2122
use once_cell::sync::Lazy;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[package]
2+
name = "interledger-rates"
3+
version = "0.4.0"
4+
authors = ["Kincaid O'Neil <[email protected]>"]
5+
edition = "2018"
6+
7+
# TODO Add other metadata here!
8+
9+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
10+
11+
[dependencies]
12+
async-trait = "0.1.22"
13+
futures = { version = "0.3.1", default-features = false }
14+
interledger-errors = { path = "../interledger-errors", version = "^0.1.0" }
15+
log = { version = "0.4.8", default-features = false }
16+
once_cell = "1.3.1"
17+
reqwest = { version = "0.10.0", default-features = false, features = ["default-tls", "json"] }
18+
secrecy = { version = "0.6", default-features = false, features = ["alloc", "serde"] }
19+
serde = { version = "1.0.101", default-features = false, features = ["derive"]}
20+
tokio = { version = "0.2.6", default-features = false, features = ["macros", "time"] }

crates/interledger-rates/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# interledger-rates
2+
3+
Utilities for fetching and caching exchange rates from external APIs, which supports CoinCap and CryptoCompare rate backends.

0 commit comments

Comments
 (0)