mirror of https://github.com/rwf2/Rocket.git
Use 'Content-Type' for format routing. Simplify 'raw_upload' example.
This commit is contained in:
parent
4769b17d13
commit
b4305cb430
|
@ -3,19 +3,14 @@
|
||||||
|
|
||||||
extern crate rocket;
|
extern crate rocket;
|
||||||
|
|
||||||
|
use std::io;
|
||||||
|
|
||||||
use rocket::request::Data;
|
use rocket::request::Data;
|
||||||
use rocket::response::Failure;
|
use rocket::response::data::Plain;
|
||||||
use rocket::http::StatusCode;
|
|
||||||
|
|
||||||
#[post("/upload", format = "text/plain", data = "<data>")]
|
#[post("/upload", format = "text/plain", data = "<data>")]
|
||||||
fn upload(data: Data) -> Result<String, Failure> {
|
fn upload(data: Data) -> io::Result<Plain<String>> {
|
||||||
match data.stream_to_file("/tmp/upload.txt") {
|
data.stream_to_file("/tmp/upload.txt").map(|n| Plain(n.to_string()))
|
||||||
Ok(n) => Ok(format!("OK: {} bytes uploaded.", n)),
|
|
||||||
Err(e) => {
|
|
||||||
println!(" => Failed writing to file: {:?}.", e);
|
|
||||||
return Err(Failure(StatusCode::InternalServerError));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/")]
|
#[get("/")]
|
||||||
|
|
|
@ -220,6 +220,11 @@ impl fmt::Display for Request {
|
||||||
/// Pretty prints a Request. This is primarily used by Rocket's logging
|
/// Pretty prints a Request. This is primarily used by Rocket's logging
|
||||||
/// infrastructure.
|
/// infrastructure.
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
write!(f, "{} {}", Green.paint(&self.method), Blue.paint(&self.uri))
|
write!(f, "{} {}", Green.paint(&self.method), Blue.paint(&self.uri))?;
|
||||||
|
if self.method.supports_payload() && !self.content_type().is_any() {
|
||||||
|
write!(f, " {}", Yellow.paint(self.content_type()))?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,6 +138,6 @@ impl Collider<Request> for Route {
|
||||||
fn collides_with(&self, req: &Request) -> bool {
|
fn collides_with(&self, req: &Request) -> bool {
|
||||||
self.method == req.method
|
self.method == req.method
|
||||||
&& req.uri().collides_with(&self.path.as_uri())
|
&& req.uri().collides_with(&self.path.as_uri())
|
||||||
&& req.accepts().collides_with(&self.content_type)
|
&& req.content_type().collides_with(&self.content_type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue