add /p/<id> routes
This is to work with text/plain type files only Signed-off-by: Gunwant Jain <mail@wantguns.dev>
This commit is contained in:
parent
805e4ce7d2
commit
66ea75de7f
|
@ -1 +1,2 @@
|
|||
/target
|
||||
upload/*
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -9,3 +9,11 @@ edition = "2018"
|
|||
[dependencies]
|
||||
rand = "0.8.0"
|
||||
rocket = "0.4.6"
|
||||
rocket_contrib = { version = "0.4.6", features = ["tera_templates"] }
|
||||
tree_magic = "0.2.3"
|
||||
|
||||
# [dependencies.rocket_contrib]
|
||||
# version = "0.4.6"
|
||||
# default-features = false
|
||||
# features = ["tera_templates"]
|
||||
|
||||
|
|
20
src/main.rs
20
src/main.rs
|
@ -1,17 +1,31 @@
|
|||
#![feature(proc_macro_hygiene, decl_macro)]
|
||||
#[macro_use] extern crate rocket;
|
||||
|
||||
extern crate tree_magic;
|
||||
|
||||
use std::io;
|
||||
use std::path::Path;
|
||||
use std::fs::File;
|
||||
|
||||
use rocket::Data;
|
||||
use rocket::http::RawStr;
|
||||
use rocket_contrib::templates::Template;
|
||||
|
||||
mod paste_id;
|
||||
|
||||
use paste_id::PasteId;
|
||||
|
||||
#[get("/p/<id>")]
|
||||
fn pretty_retrieve(id: PasteId) -> Option<File> {
|
||||
let filename = format!("upload/{id}", id = id);
|
||||
let filepath = Path::new(&filename);
|
||||
|
||||
match tree_magic::from_filepath(filepath).as_str() {
|
||||
"text/plain" => File::open(&filename).ok(),
|
||||
_ => Err("does not have the MIME type of a plaintext file").ok()
|
||||
}
|
||||
}
|
||||
|
||||
#[get("/<id>")]
|
||||
fn retrieve(id: PasteId) -> Option<File> {
|
||||
let filename = format!("upload/{id}", id = id);
|
||||
|
@ -43,11 +57,15 @@ USAGE
|
|||
GET /<id>
|
||||
|
||||
retrieves the content for the paste with id `<id>`
|
||||
|
||||
GET /p/<id>
|
||||
|
||||
retrieves the content for the paste with id `<id>`, with syntax highlighting
|
||||
"
|
||||
}
|
||||
|
||||
fn main() {
|
||||
rocket::ignite()
|
||||
.mount("/", routes![index, upload, retrieve])
|
||||
.mount("/", routes![index, upload, retrieve, pretty_retrieve])
|
||||
.launch();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue