Skip to content

Commit 24f1f20

Browse files
committed
Use PublicMessage{} and Payload{} with #[serde(untagged)] instead
1 parent bcd671d commit 24f1f20

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

src/kraken.rs

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -358,13 +358,13 @@ struct SubscriptionStatus {
358358
/// "XBT/USD"
359359
/// ]
360360
///```
361-
#[derive(Debug, Deserialize, Serialize, PartialEq, Default)]
362-
struct Book {
361+
#[derive(Debug, Deserialize, Serialize, PartialEq)]
362+
struct PublicMessage {
363363
/// Channel ID of subscription - deprecated, use channelName and pair
364364
// #[serde(rename = "channelID")]
365365
channel_id: usize,
366366

367-
levels: Levels,
367+
payload: Payload,
368368

369369
/// Channel Name of subscription
370370
// #[serde(rename = "channelName")]
@@ -374,15 +374,18 @@ struct Book {
374374
pair: String,
375375
}
376376

377-
#[derive(Debug, Deserialize, Serialize, PartialEq, Default)]
378-
struct Levels {
379-
/// Array of price levels, ascending from best ask
380-
#[serde(rename = "as")]
381-
asks: Vec<Level>,
382-
383-
/// Array of price levels, descending from best bid
384-
#[serde(rename = "bs")]
385-
bids: Vec<Level>,
377+
#[derive(Debug, Deserialize, Serialize, PartialEq)]
378+
#[serde(untagged)]
379+
enum Payload {
380+
Book {
381+
/// Array of price levels, ascending from best ask
382+
#[serde(rename = "as")]
383+
asks: Vec<Level>,
384+
385+
/// Array of price levels, descending from best bid
386+
#[serde(rename = "bs")]
387+
bids: Vec<Level>,
388+
}
386389
}
387390

388391
#[derive(Debug, Deserialize, Serialize, PartialEq)]
@@ -545,7 +548,7 @@ fn deserialize_event(s: String) -> serde_json::Result<GeneralMessage> {
545548
Ok(serde_json::from_str(&s)?)
546549
}
547550

548-
fn deserialize_book(s: String) -> serde_json::Result<Book> {
551+
fn deserialize_book(s: String) -> serde_json::Result<PublicMessage> {
549552
Ok(serde_json::from_str(&s)?)
550553
}
551554

@@ -593,10 +596,9 @@ mod test {
593596
\"book-10\",\
594597
\"ETH/XBT\"\
595598
]".to_string())?,
596-
Book{
597-
// Event::Book{
599+
PublicMessage{
598600
channel_id: 640,
599-
levels: Levels{
601+
payload: Payload::Book{
600602
bids: vec![
601603
Level { price: dec!(0.067990), volume: dec!(29.35934962), timestamp: dec!(1652817780.853167) },
602604
Level { price: dec!(0.067980), volume: dec!(48.72763614), timestamp: dec!(1652817781.487388) },
@@ -640,7 +642,7 @@ mod test {
640642
\"depth\":10,\
641643
\"name\":\"book\"\
642644
}\
643-
}".to_string())?, GeneralMessage::SubscriptionStatus {
645+
}".to_string())?, GeneralMessage::SubscriptionStatus{
644646
channel_name: "book-10".to_string(),
645647
reqid: None,
646648
pair: Some("ETH/XBT".to_string()),

0 commit comments

Comments
 (0)