extern crate ws; // WebSocket crate

use std::cmp::Ordering; // ordering
use rand::Rng; // random

fn main() {

    let secret_number:u32 = rand::thread_rng().gen_range(0, 10); // generate random number

    let srv = ws::listen("127.0.0.1:3012", |out| {
        move |msg:ws::Message| {
            // receive websocket as text
            let guess = msg.into_text().unwrap();

            // try parse to integer
            let guess: Option<u32> = match guess.trim().parse() {
                Ok(num) => Some(num),
                Err(_) => None,
            };

            // define a response
            let response:&str = match guess {
                None => "not valid",
                Some(guess) => match guess.cmp(&secret_number) {
                   Ordering::Less => "Too low",
                   Ordering::Greater => "Too high",
                   Ordering::Equal => "you found !",
               }
           };

           // return the response in websocket
           out.send(response)
        }
    });

    return ();
}