Browse Source

Merge #773

773: Add HTTP API to get cfds and takers r=bonomat a=bonomat

It's useful for a service built on top of the maker as it can just poll and does not have to build up state using sse

Co-authored-by: bonomat <philipp@hoenisch.at>
no-buy-button-while-setting-up-cfd
bors[bot] 3 years ago
committed by GitHub
parent
commit
f61c1c558a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      daemon/src/maker.rs
  2. 26
      daemon/src/routes_maker.rs

4
daemon/src/maker.rs

@ -314,7 +314,9 @@ async fn main() -> Result<()> {
routes_maker::post_sell_order,
routes_maker::post_cfd_action,
routes_maker::get_health_check,
routes_maker::post_withdraw_request
routes_maker::post_withdraw_request,
routes_maker::get_cfds,
routes_maker::get_takers,
],
)
.register("/api", rocket::catchers![routes_maker::unauthorized])

26
daemon/src/routes_maker.rs

@ -3,7 +3,7 @@ use bdk::bitcoin::Network;
use daemon::auth::Authenticated;
use daemon::model::cfd::OrderId;
use daemon::model::{Price, Usd, WalletInfo};
use daemon::projection::{CfdAction, Feeds};
use daemon::projection::{Cfd, CfdAction, Feeds, Identity};
use daemon::routes::EmbeddedFileExt;
use daemon::to_sse_event::ToSseEvent;
use daemon::{maker_cfd, maker_inc_connections, monitor, oracle, wallet};
@ -236,6 +236,30 @@ pub async fn post_withdraw_request(
Ok(url)
}
#[rocket::get("/cfds")]
pub async fn get_cfds<'r>(
rx: &State<Feeds>,
_auth: Authenticated,
) -> Result<Json<Vec<Cfd>>, HttpApiProblem> {
let rx = rx.inner();
let rx_cfds = rx.cfds.clone();
let cfds = rx_cfds.borrow().clone();
Ok(Json(cfds))
}
#[rocket::get("/takers")]
pub async fn get_takers<'r>(
rx: &State<Feeds>,
_auth: Authenticated,
) -> Result<Json<Vec<Identity>>, HttpApiProblem> {
let rx = rx.inner();
let rx_connected_takers = rx.connected_takers.clone();
let takers = rx_connected_takers.borrow().clone();
Ok(Json(takers))
}
#[cfg(test)]
mod tests {
use super::*;

Loading…
Cancel
Save