Advertisement
Guest User

Untitled

a guest
Feb 1st, 2017
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.59 KB | None | 0 0
  1. extern crate hyper;
  2. extern crate serde_json;
  3.  
  4. use respond;
  5.  
  6. use self::hyper::{
  7.     client,
  8.     Client,
  9.     status
  10. };
  11. use std::io::Read;
  12.  
  13. pub enum Kind {
  14.     Guest,
  15.     User,
  16. }
  17.  
  18. #[derive(Serialize, Deserialize, Debug)]
  19. pub struct Auth {
  20.     pub session: String,
  21.     #[serde(rename = "type")]
  22.     pub typ: String,
  23. }
  24.  
  25. #[derive(Serialize, Deserialize, Debug)]
  26. pub struct Register {
  27.     pub username: String,
  28.     pub bind_email: bool,
  29.     pub password: String,
  30.     pub auth: Auth,
  31. }
  32.  
  33. pub fn issue(url: String, kind: Kind, data: &Register) -> Result<respond::register::Register, status::StatusCode> {
  34.     let client = Client::new();
  35.     let assembled_url = format!(
  36.         "{}/register/{}",
  37.         url,
  38.         match kind{
  39.             self::Kind::Guest => "guest",
  40.             self::Kind::User => "user",
  41.         }
  42.     );
  43.     let request_builder = client.post(
  44.         &assembled_url
  45.     );
  46.  
  47.     let body = serde_json::to_string(data).unwrap();
  48.     request_builder.body(&body);
  49.    
  50.     let response = request_builder.send();
  51.     match response {
  52.         Ok(mut v) => {
  53.             match v.status {
  54.                 hyper::Ok => {
  55.                     let mut body = String::new();
  56.                     v.read_to_string(&mut body).unwrap();
  57.                     match serde_json::from_str(&body) {
  58.                         Ok(v) => Ok(v),
  59.                         _ => Err(status::StatusCode::Unregistered(0)),
  60.                     }
  61.                 },
  62.                 _ => Err(v.status),
  63.             }
  64.         },
  65.         _ => Err(status::StatusCode::Unregistered(0))
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement