2018-04-22 15:35:37 +02:00
|
|
|
#![feature(plugin, custom_derive)]
|
|
|
|
#![plugin(rocket_codegen)]
|
|
|
|
|
2018-04-29 17:40:10 +02:00
|
|
|
extern crate base64;
|
2018-04-24 11:21:39 +02:00
|
|
|
extern crate bcrypt;
|
2018-04-29 17:40:10 +02:00
|
|
|
extern crate chrono;
|
2018-04-24 11:21:39 +02:00
|
|
|
extern crate heck;
|
2018-04-29 17:40:10 +02:00
|
|
|
extern crate hex;
|
2018-04-22 15:35:37 +02:00
|
|
|
#[macro_use]
|
|
|
|
extern crate diesel;
|
|
|
|
extern crate dotenv;
|
2018-04-29 17:40:10 +02:00
|
|
|
extern crate openssl;
|
2018-04-22 15:35:37 +02:00
|
|
|
extern crate rocket;
|
|
|
|
extern crate rocket_contrib;
|
2018-04-24 16:52:47 +02:00
|
|
|
extern crate serde;
|
|
|
|
#[macro_use]
|
2018-04-23 17:09:05 +02:00
|
|
|
extern crate serde_json;
|
2018-04-22 15:35:37 +02:00
|
|
|
|
|
|
|
use diesel::pg::PgConnection;
|
|
|
|
use diesel::r2d2::{ConnectionManager, Pool};
|
|
|
|
use dotenv::dotenv;
|
|
|
|
use rocket_contrib::Template;
|
2018-04-24 11:21:39 +02:00
|
|
|
use std::env;
|
2018-04-22 15:35:37 +02:00
|
|
|
|
2018-04-23 13:57:14 +02:00
|
|
|
mod activity_pub;
|
2018-04-22 15:35:37 +02:00
|
|
|
mod db_conn;
|
|
|
|
mod models;
|
|
|
|
mod schema;
|
|
|
|
mod routes;
|
2018-04-23 12:54:37 +02:00
|
|
|
mod utils;
|
2018-04-22 15:35:37 +02:00
|
|
|
|
|
|
|
type PgPool = Pool<ConnectionManager<PgConnection>>;
|
|
|
|
|
|
|
|
/// Initializes a database pool.
|
|
|
|
fn init_pool() -> PgPool {
|
|
|
|
dotenv().ok();
|
|
|
|
|
|
|
|
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");
|
|
|
|
let manager = ConnectionManager::<PgConnection>::new(database_url);
|
|
|
|
Pool::new(manager).expect("db pool")
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
rocket::ignite()
|
|
|
|
.mount("/", routes![
|
2018-04-24 10:35:45 +02:00
|
|
|
routes::well_known::host_meta,
|
2018-04-24 13:38:43 +02:00
|
|
|
routes::well_known::webfinger,
|
2018-04-24 10:35:45 +02:00
|
|
|
|
2018-04-29 19:50:46 +02:00
|
|
|
routes::instance::index,
|
2018-04-22 15:35:37 +02:00
|
|
|
routes::instance::configure,
|
2018-04-22 20:13:12 +02:00
|
|
|
routes::instance::post_config,
|
|
|
|
|
2018-04-23 11:52:44 +02:00
|
|
|
routes::user::me,
|
2018-04-22 20:13:12 +02:00
|
|
|
routes::user::details,
|
2018-04-24 14:31:02 +02:00
|
|
|
routes::user::activity_details,
|
2018-04-29 20:01:42 +02:00
|
|
|
routes::user::outbox,
|
2018-04-22 20:13:12 +02:00
|
|
|
routes::user::new,
|
|
|
|
routes::user::create,
|
2018-04-23 11:52:44 +02:00
|
|
|
|
|
|
|
routes::session::new,
|
2018-04-23 12:54:37 +02:00
|
|
|
routes::session::create,
|
2018-04-23 13:13:49 +02:00
|
|
|
routes::session::delete,
|
2018-04-23 12:54:37 +02:00
|
|
|
|
|
|
|
routes::blogs::details,
|
2018-04-24 14:31:02 +02:00
|
|
|
routes::blogs::activity_details,
|
2018-04-29 19:49:56 +02:00
|
|
|
routes::blogs::outbox,
|
2018-04-23 12:54:37 +02:00
|
|
|
routes::blogs::new,
|
|
|
|
routes::blogs::create,
|
2018-04-23 16:25:39 +02:00
|
|
|
|
|
|
|
routes::posts::details,
|
|
|
|
routes::posts::new,
|
|
|
|
routes::posts::new_auth,
|
|
|
|
routes::posts::create
|
2018-04-22 15:35:37 +02:00
|
|
|
])
|
|
|
|
.manage(init_pool())
|
|
|
|
.attach(Template::fairing())
|
|
|
|
.launch();
|
|
|
|
}
|