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
//! # artifact_serde //! This is a small crate to handle deseralizing and serializing Artifact Deck Codes.\ //! See this link for reference implementation: [link](https://github.com/ValveSoftware/ArtifactDeckCode) //! \ //! Most structs in this crate will mimic the JSON structure provided by Valve, either by API or //! base64 encoding. #[macro_use] extern crate serde_derive; pub mod de; pub mod ser; /// Takes in an Artifact Deck Code as a &str and returns a DeserializedDeck matching the structure /// refer to deck_decoder.php for reference implementation and expected structure /// [here](https://github.com/ValveSoftware/ArtifactDeckCode) /// # Example /// ``` /// artifact_serde::decode("ADCJWkTZX05uwGDCRV4XQGy3QGLmqUBg4GQJgGLGgO7AaABR3JlZW4vQmxhY2sgRXhhbXBsZQ__"); /// ``` pub fn decode(adc: &str) -> Result<de::DeserializedDeck, String> { de::decode(adc) } /// Takes in a mutable reference to a [DeserializedDeck](struct.DeserializedDeck.html) returns /// the corresponding Artifact Deck Code refer to deck_encoder.php for reference implementation /// [here](https://github.com/ValveSoftware/ArtifactDeckCode) /// # Example /// ``` /// let mut my_deck = artifact_serde::decode("ADCJWkTZX05uwGDCRV4XQGy3QGLmqUBg4GQJgGLGgO7AaABR3JlZW4vQmxhY2sgRXhhbXBsZQ__").unwrap(); /// let my_adc = artifact_serde::encode(&mut my_deck).unwrap(); /// ``` pub fn encode(deck: &mut de::DeserializedDeck) -> Result<String, String> { ser::encode(deck) } #[cfg(test)] mod tests { #[test] fn it_works() { assert_eq!(2 + 2, 4); } #[test] fn decode_to_encode() { let mut deck = crate::decode( "ADCJWkTZX05uwGDCRV4XQGy3QGLmqUBg4GQJgGLGgO7AaABR3JlZW4vQmxhY2sgRXhhbXBsZQ__", ) .unwrap(); let string = crate::ser::encode(&mut deck).unwrap(); assert_eq!( string.as_str(), "ADCJWkTZX05uwGDCRV4XQGy3QGLmqUBg4GQJgGLGgO7AaABR3JlZW4vQmxhY2sgRXhhbXBsZQ__" ); } }