macro_rules! request { ($route:expr, $method:ident($body:expr), $url:expr, $($rest:tt)*) => {{ let client = HyperClient::new(); request($route, || client .$method(&format!(api!($url), $($rest)*)) .body(&$body))? }}; ($route:expr, $method:ident($body:expr), $url:expr) => {{ let client = HyperClient::new(); request($route, || client .$method(api!($url)) .body(&$body))? }}; ($route:expr, $method:ident, $url:expr, $($rest:tt)*) => {{ let client = HyperClient::new(); request($route, || client .$method(&format!(api!($url), $($rest)*)))? }}; ($route:expr, $method:ident, $url:expr) => {{ let client = HyperClient::new(); request($route, || client .$method(api!($url)))? }}; } macro_rules! cdn { ($e:expr) => { concat!("https://cdn.discordapp.com", $e) }; ($e:expr, $($rest:tt)*) => { format!(cdn!($e), $($rest)*) }; } macro_rules! base { ($e:expr) => { concat!("https://discordapp.com", $e) }; ($e:expr, $($rest:tt)*) => { format!(base!($e), $($rest)*) }; } macro_rules! api { ($e:expr) => { concat!("https://discordapp.com/api/v6", $e) }; ($e:expr, $($rest:tt)*) => { format!(api!($e), $($rest)*) }; } macro_rules! status { ($e:expr) => { concat!("https://status.discordapp.com/api/v2", $e) } } // Enable/disable check for cache #[cfg(feature="cache")] macro_rules! feature_cache { ($enabled:block else $disabled:block) => { { $enabled } } } #[cfg(not(feature="cache"))] macro_rules! feature_cache { ($enabled:block else $disabled:block) => { { $disabled } } } // Enable/disable check for framework #[cfg(feature="framework")] macro_rules! feature_framework { ($enabled:block else $disabled:block) => { { $enabled } } } #[cfg(not(feature="framework"))] macro_rules! feature_framework { ($enabled:block else $disabled:block) => { { $disabled } } } // Enable/disable check for methods #[cfg(feature="methods")] macro_rules! feature_methods { ($enabled:block else $disabled:block) => { { $enabled } } } #[cfg(not(feature="methods"))] macro_rules! feature_methods { ($enabled:block else $disabled:block) => { { $disabled } } } // Enable/disable check for voice #[cfg(feature="voice")] macro_rules! feature_voice { ($enabled:block else $disabled:block) => { { $enabled } } } #[cfg(not(feature="voice"))] macro_rules! feature_voice { ($enabled:block else $disabled:block) => { { $disabled } } }