2023-03-07 22:45:37 -08:00
|
|
|
use actix_web::{
|
|
|
|
middleware::Logger,
|
|
|
|
web::{self, Data},
|
2023-03-13 14:18:18 -07:00
|
|
|
App, HttpServer,
|
2023-03-07 22:45:37 -08:00
|
|
|
};
|
2023-03-13 09:51:30 -07:00
|
|
|
use candles::get_candles;
|
2023-03-07 22:45:37 -08:00
|
|
|
use dotenv;
|
2023-03-13 09:51:30 -07:00
|
|
|
use openbook_candles::{
|
|
|
|
candle_creation::trade_fetching::scrape::fetch_market_infos,
|
|
|
|
database::initialize::connect_to_database,
|
|
|
|
structs::markets::load_markets,
|
|
|
|
utils::{Config, WebContext},
|
|
|
|
};
|
|
|
|
use traders::get_top_traders_by_base_volume;
|
2023-03-12 22:03:37 -07:00
|
|
|
|
2023-03-13 14:18:18 -07:00
|
|
|
use crate::traders::get_top_traders_by_quote_volume;
|
|
|
|
|
2023-03-12 22:03:37 -07:00
|
|
|
mod candles;
|
|
|
|
mod server_error;
|
2023-03-13 09:51:30 -07:00
|
|
|
mod traders;
|
2023-03-05 23:11:15 -08:00
|
|
|
|
|
|
|
#[actix_web::main]
|
2023-03-12 22:03:37 -07:00
|
|
|
async fn main() -> std::io::Result<()> {
|
2023-03-07 22:45:37 -08:00
|
|
|
dotenv::dotenv().ok();
|
|
|
|
env_logger::init();
|
|
|
|
|
2023-03-12 22:03:37 -07:00
|
|
|
let rpc_url: String = dotenv::var("RPC_URL").unwrap();
|
|
|
|
let database_url: String = dotenv::var("DATABASE_URL").unwrap();
|
2023-03-13 09:51:30 -07:00
|
|
|
let max_pg_pool_connections: u32 = dotenv::var("MAX_PG_POOL_CONNS_SERVER")
|
|
|
|
.unwrap()
|
|
|
|
.parse::<u32>()
|
|
|
|
.unwrap();
|
2023-03-07 22:45:37 -08:00
|
|
|
|
2023-03-12 22:03:37 -07:00
|
|
|
let config = Config {
|
|
|
|
rpc_url: rpc_url.clone(),
|
|
|
|
database_url: database_url.clone(),
|
|
|
|
max_pg_pool_connections,
|
|
|
|
};
|
2023-03-05 23:11:15 -08:00
|
|
|
|
2023-03-12 22:03:37 -07:00
|
|
|
let markets = load_markets("/Users/dboures/dev/openbook-candles/markets.json");
|
|
|
|
let market_infos = fetch_market_infos(&config, markets).await.unwrap();
|
|
|
|
let pool = connect_to_database(&config).await.unwrap();
|
|
|
|
|
|
|
|
let context = Data::new(WebContext {
|
|
|
|
pool,
|
|
|
|
markets: market_infos,
|
|
|
|
});
|
2023-03-05 23:11:15 -08:00
|
|
|
|
2023-03-13 09:51:30 -07:00
|
|
|
println!("Starting server");
|
2023-03-07 22:45:37 -08:00
|
|
|
HttpServer::new(move || {
|
2023-03-05 23:11:15 -08:00
|
|
|
App::new()
|
|
|
|
.wrap(Logger::default())
|
2023-03-13 09:51:30 -07:00
|
|
|
.app_data(context.clone())
|
|
|
|
.service(
|
|
|
|
web::scope("/api")
|
|
|
|
.service(get_candles)
|
|
|
|
.service(get_top_traders_by_base_volume)
|
2023-03-13 14:18:18 -07:00
|
|
|
.service(get_top_traders_by_quote_volume),
|
2023-03-13 09:51:30 -07:00
|
|
|
)
|
2023-03-05 23:11:15 -08:00
|
|
|
})
|
|
|
|
.bind(("127.0.0.1", 8080))?
|
|
|
|
.run()
|
|
|
|
.await
|
2023-03-05 22:52:42 -08:00
|
|
|
}
|