1use once_cell::sync::Lazy;
3use serde::{Deserialize, Deserializer};
4use url::Url;
5
6pub(crate) mod array_stream_reader;
7
8pub static ROOT_URL: Lazy<Url> = Lazy::new(|| Url::parse("https://api.scryfall.com/").unwrap());
10pub static CARDS_URL: Lazy<Url> = Lazy::new(|| ROOT_URL.join("cards/").unwrap());
12pub static SETS_URL: Lazy<Url> = Lazy::new(|| ROOT_URL.join("sets/").unwrap());
14pub static BULK_DATA_URL: Lazy<Url> = Lazy::new(|| ROOT_URL.join("bulk-data/").unwrap());
16pub static CATALOG_URL: Lazy<Url> = Lazy::new(|| ROOT_URL.join("catalog/").unwrap());
18
19pub const API_RULING: &str = "rulings/";
22
23pub fn deserialize_or_none<'de, D: Deserializer<'de>, T: Deserialize<'de>>(
27 deserializer: D,
28) -> Result<Option<T>, D::Error> {
29 T::deserialize(deserializer).map(Some).or(Ok(None))
30}