now the context og the templates is unificated in a single file
parent
0203b88900
commit
11e183504d
38
src/main.rs
38
src/main.rs
|
@ -1,5 +1,6 @@
|
||||||
#![feature(proc_macro_hygiene, decl_macro)]
|
#![feature(proc_macro_hygiene, decl_macro)]
|
||||||
|
|
||||||
|
pub mod misc;
|
||||||
pub mod models;
|
pub mod models;
|
||||||
pub mod schema;
|
pub mod schema;
|
||||||
|
|
||||||
|
@ -9,7 +10,6 @@ extern crate rocket;
|
||||||
extern crate diesel;
|
extern crate diesel;
|
||||||
extern crate comrak;
|
extern crate comrak;
|
||||||
extern crate dotenv;
|
extern crate dotenv;
|
||||||
extern crate rand;
|
|
||||||
extern crate rocket_contrib;
|
extern crate rocket_contrib;
|
||||||
extern crate tera;
|
extern crate tera;
|
||||||
|
|
||||||
|
@ -19,25 +19,13 @@ use comrak::{markdown_to_html, ComrakOptions};
|
||||||
use diesel::pg::PgConnection;
|
use diesel::pg::PgConnection;
|
||||||
use diesel::result::Error;
|
use diesel::result::Error;
|
||||||
use dotenv::dotenv;
|
use dotenv::dotenv;
|
||||||
use rand::Rng;
|
use misc::get_context;
|
||||||
use rocket::Request;
|
use rocket::Request;
|
||||||
use rocket_contrib::serve::StaticFiles;
|
use rocket_contrib::serve::StaticFiles;
|
||||||
use rocket_contrib::templates::Template;
|
use rocket_contrib::templates::Template;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::vec::Vec;
|
use std::vec::Vec;
|
||||||
use tera::Context;
|
|
||||||
|
|
||||||
const TITLES: [&str; 9] = [
|
|
||||||
"/* {} */",
|
|
||||||
"# {}",
|
|
||||||
"// {}",
|
|
||||||
"<!-- {} -->",
|
|
||||||
"{# {} #}",
|
|
||||||
"-- {}",
|
|
||||||
"--[[ {} --]]",
|
|
||||||
"; {}",
|
|
||||||
"% {}",
|
|
||||||
];
|
|
||||||
const MAX_POSTS_PER_PAGE: i64 = 20;
|
const MAX_POSTS_PER_PAGE: i64 = 20;
|
||||||
|
|
||||||
fn establish_connection() -> PgConnection {
|
fn establish_connection() -> PgConnection {
|
||||||
|
@ -71,17 +59,12 @@ fn get_posts(page: i64) -> (Vec<Post>, i64) {
|
||||||
fn index(page: Option<i8>) -> Template {
|
fn index(page: Option<i8>) -> Template {
|
||||||
let page = page.unwrap_or_else(|| 1);
|
let page = page.unwrap_or_else(|| 1);
|
||||||
|
|
||||||
let mut context = Context::new();
|
let mut context = get_context();
|
||||||
|
|
||||||
let mut rng = rand::thread_rng();
|
|
||||||
let title_fmt = TITLES[rng.gen_range(0, TITLES.len())];
|
|
||||||
let title = str::replace(title_fmt, "{}", "CódigoComentado");
|
|
||||||
|
|
||||||
let (posts, n_posts) = get_posts(page as i64);
|
let (posts, n_posts) = get_posts(page as i64);
|
||||||
|
|
||||||
let total_pages = (n_posts as f64 / MAX_POSTS_PER_PAGE as f64).ceil() as i64;
|
let total_pages = (n_posts as f64 / MAX_POSTS_PER_PAGE as f64).ceil() as i64;
|
||||||
|
|
||||||
context.insert("title", &title);
|
|
||||||
context.insert("posts", &posts);
|
context.insert("posts", &posts);
|
||||||
context.insert("total_pages", &total_pages);
|
context.insert("total_pages", &total_pages);
|
||||||
context.insert("actual_page", &page);
|
context.insert("actual_page", &page);
|
||||||
|
@ -99,19 +82,13 @@ fn get_post(id_number: i32) -> Result<Post, Error> {
|
||||||
|
|
||||||
#[get("/post/<title>")]
|
#[get("/post/<title>")]
|
||||||
fn show_post(title: String) -> Template {
|
fn show_post(title: String) -> Template {
|
||||||
let mut context = Context::new();
|
let mut context = get_context();
|
||||||
|
|
||||||
let title_splited: Vec<&str> = title.split('-').collect();
|
let title_splited: Vec<&str> = title.split('-').collect();
|
||||||
let id = title_splited.last().unwrap().parse().unwrap();
|
let id = title_splited.last().unwrap().parse().unwrap();
|
||||||
|
|
||||||
let mut rng = rand::thread_rng();
|
|
||||||
let title_fmt = TITLES[rng.gen_range(0, TITLES.len())];
|
|
||||||
let title = str::replace(title_fmt, "{}", "CódigoComentado");
|
|
||||||
|
|
||||||
let post = get_post(id);
|
let post = get_post(id);
|
||||||
|
|
||||||
context.insert("title", &title);
|
|
||||||
|
|
||||||
match post {
|
match post {
|
||||||
Ok(mut p) => {
|
Ok(mut p) => {
|
||||||
let content = markdown_to_html(&p.content, &ComrakOptions::default());
|
let content = markdown_to_html(&p.content, &ComrakOptions::default());
|
||||||
|
@ -130,15 +107,10 @@ fn show_post(title: String) -> Template {
|
||||||
|
|
||||||
#[catch(404)]
|
#[catch(404)]
|
||||||
fn not_found_404(req: &Request) -> Template {
|
fn not_found_404(req: &Request) -> Template {
|
||||||
let mut context = Context::new();
|
let mut context = get_context();
|
||||||
|
|
||||||
let mut rng = rand::thread_rng();
|
|
||||||
let title_fmt = TITLES[rng.gen_range(0, TITLES.len())];
|
|
||||||
let title = str::replace(title_fmt, "{}", "CódigoComentado");
|
|
||||||
|
|
||||||
let uri = format!("{}", req.uri());
|
let uri = format!("{}", req.uri());
|
||||||
|
|
||||||
context.insert("title", &title);
|
|
||||||
context.insert("url", &uri);
|
context.insert("url", &uri);
|
||||||
Template::render("404", context)
|
Template::render("404", context)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
extern crate rand;
|
||||||
|
extern crate tera;
|
||||||
|
|
||||||
|
use rand::Rng;
|
||||||
|
use tera::Context;
|
||||||
|
|
||||||
|
const TITLES: [&str; 9] = [
|
||||||
|
"/* {} */",
|
||||||
|
"# {}",
|
||||||
|
"// {}",
|
||||||
|
"<!-- {} -->",
|
||||||
|
"{# {} #}",
|
||||||
|
"-- {}",
|
||||||
|
"--[[ {} --]]",
|
||||||
|
"; {}",
|
||||||
|
"% {}",
|
||||||
|
];
|
||||||
|
|
||||||
|
pub fn get_context() -> Context {
|
||||||
|
let mut context = Context::new();
|
||||||
|
|
||||||
|
let mut rng = rand::thread_rng();
|
||||||
|
let title_fmt = TITLES[rng.gen_range(0, TITLES.len())];
|
||||||
|
let title = str::replace(title_fmt, "{}", "CódigoComentado");
|
||||||
|
|
||||||
|
context.insert("title", &title);
|
||||||
|
context
|
||||||
|
}
|
Loading…
Reference in New Issue