rustless 0.1.2

Rustless is a REST-like API micro-framework for Rust.
use std::fmt::{Show};
use std::io::net::ip::SocketAddr;
use {Extensible};
use url::Host;

use server::method::Method;
use server::header;
use server::header::Headers;
use server::mime::{Mime, TopLevel, SubLevel};

pub trait AsUrl {
    fn scheme(&self) -> &str;
    fn host(&self) -> &Host;
    fn port(&self) -> &u16;
    fn path(&self) -> &Vec<String>;
    fn username(&self) -> &Option<String>;
    fn password(&self) -> &Option<String>;
    fn query(&self) -> &Option<String>;
    fn fragment(&self) -> &Option<String>;
}

pub trait Request: Show + Send + Extensible {
    fn remote_addr(&self) -> &SocketAddr;
    fn headers(&self) -> &Headers;
    fn method(&self) -> &Method;
    fn url(&self) -> &AsUrl;
    fn body(&self) -> &Vec<u8>;

    fn is_json_body(&self) -> bool {
        let content_type = self.headers().get::<header::common::ContentType>(); 
        if content_type.is_some() {
            match content_type.unwrap().0 {
                Mime(TopLevel::Application, SubLevel::Json, _) => true,
                _ => false
            }
        } else {
            false
        }
    }
}