1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
use reqwest::Response; use result::*; use serde::Deserialize; use serde_json; #[doc(hidden)] #[macro_export] macro_rules! check_resp { ($resp:expr) => {{ use result::EbayError; if !$resp.status().is_success() { let body = $resp.text()?; return Err(EbayError::Request { path: $resp.url().to_string(), status: $resp.status(), body, }); } }}; } pub fn read_ebay_response<T: for<'de> Deserialize<'de>>(resp: &mut Response) -> EbayResult<T> { let body = resp.text()?; if !resp.status().is_success() { return Err(EbayError::Request { path: resp.url().to_string(), status: resp.status(), body, }); } match serde_json::from_str(&body) { Ok(v) => Ok(v), Err(err) => { return Err(EbayError::Deserialize { msg: err.to_string(), body, }) } } } #[doc(hidden)] #[macro_export] macro_rules! uppercase_str_enum { (pub enum $name:ident { $($v:ident,)+ }) => { #[derive(Debug, Serialize, Deserialize, PartialEq, Clone, Copy)] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] pub enum $name { $( $v ),* } }; }