about summary refs log tree commit diff
path: root/server/src/main.rs
blob: 4e5429b9045ce55048784ec648eb53c56ba36e0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
extern crate openssl;
#[macro_use]
extern crate diesel;
#[macro_use]
extern crate diesel_migrations;
#[macro_use]
extern crate serde_derive;
#[macro_use]
extern crate log;

mod database;
mod messages;
mod parsing;
mod routes;
mod schema;

use actix_files::Files;
use actix_web::{middleware, web, App, HttpServer};

#[actix_rt::main]
async fn main() -> std::io::Result<()> {
    std::env::set_var("RUST_LOG", "shorest,actix_web=info");
    env_logger::init();

    info!("Starting shorest {}!", std::env!("CARGO_PKG_VERSION"));

    let pool = database::establish_connection();
    database::run_migrations(&pool);

    HttpServer::new(move || {
        App::new()
            .wrap(middleware::Logger::default())
            .data(pool.clone())
            .service(
                web::resource("/")
                    .route(web::get().to(routes::root))
                    .route(web::post().to(routes::shorten)),
            )
            .service(web::resource("/{hash:[^/]{3}$}").route(web::get().to(routes::redirect)))
            .service(Files::new("/", "./client/"))
    })
    .bind(("0.0.0.0", 80))?
    .run()
    .await
}