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
}
|