Skip to content

Commit bd1285d

Browse files
committed
APIサーバーの追加と転送サーバーの削除、設定ファイルの更新
1 parent c8cdc91 commit bd1285d

File tree

8 files changed

+74
-64
lines changed

8 files changed

+74
-64
lines changed

src/transfer/config.rs renamed to src/api/config.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ use serde::Deserialize;
44

55
#[derive(Debug, Clone, Deserialize)]
66
pub struct ServiceConfig {
7+
pub path: String,
78
}
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/api/server.rs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
use std::{sync::Arc, thread::sleep, time::Duration};
2+
use actix_files as fs;
3+
4+
use actix_web::{dev::Server, middleware::{self, Logger}, web, App, HttpServer};
5+
use log::{error, info};
6+
7+
use crate::{actix_middleware::status_page, config::ServerConfig, server::server_trait::WkServer, share::{self, collection::Collection}, utils};
8+
9+
use super::config::ServiceConfig;
10+
11+
pub struct APIServer {
12+
pub config: ServerConfig<ServiceConfig>,
13+
pub share: Arc<Collection>,
14+
}
15+
16+
impl APIServer {
17+
pub fn new(config: ServerConfig<ServiceConfig>, share: Arc<Collection>) -> Self {
18+
Self {
19+
config: config,
20+
share: share,
21+
}
22+
}
23+
24+
pub fn create_server(&self) -> Result<Server, std::io::Error> {
25+
let path = match utils::fs::get_file_path(&self.share.config.path) {
26+
Ok(p) => p.join(self.share.config.api_server.service_config.path.clone()),
27+
Err(e) => return Err(std::io::Error::new(std::io::ErrorKind::Other, e.to_string())),
28+
};
29+
30+
let server_name = self.server_name().to_string();
31+
let path_clone = path.clone();
32+
let share_clone = web::Data::new(Arc::clone(&self.share));
33+
let server = HttpServer::new(move || {
34+
let custom_logger = utils::logger::custom_actix_logger(&server_name);
35+
App::new()
36+
.app_data(share_clone.clone())
37+
.wrap(custom_logger)
38+
.wrap(middleware::ErrorHandlers::new().default_handler(status_page::middleware::Handler::err_handler))
39+
// 他のミドルウェアやデータをここに追加可能
40+
.service(fs::Files::new("/", path_clone.clone()).index_file("index.html"))
41+
})
42+
.bind(self.config.server_bind.clone())?
43+
.workers(self.config.server_workers)
44+
.backlog(self.config.server_backlog)
45+
.run();
46+
47+
Ok(server)
48+
}
49+
50+
}
51+
52+
impl WkServer<ServiceConfig> for APIServer {
53+
fn config(&self) -> &ServerConfig<ServiceConfig> {
54+
&self.config
55+
}
56+
57+
fn create_server(&self) -> Result<Server, std::io::Error> {
58+
APIServer::create_server(self)
59+
}
60+
61+
fn server_name(&self) -> &str {
62+
"APIServer"
63+
}
64+
65+
fn failed_report(&mut self, e: std::io::Error, failure_count: u32, start_time: tokio::time::Instant) {
66+
67+
}
68+
69+
}

src/config.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use actix_web::middleware::Logger;
44
use serde::Deserialize;
55
use log::{error, info};
66

7-
use crate::{actix_middleware::config::MiddlewareConfig, index::{self, loader, server::IndexServer}, transfer, utils};
7+
use crate::{actix_middleware::config::MiddlewareConfig, index::{self, loader, server::IndexServer}, api, utils};
88

99
#[derive(Debug, Clone, Deserialize)]
1010
pub struct ServerConfig<ServiceConfig> {
@@ -22,7 +22,7 @@ pub struct ServerConfig<ServiceConfig> {
2222
#[derive(Debug, Clone, Deserialize)]
2323
pub struct Configuration {
2424
pub index_server: ServerConfig<index::config::ServiceConfig>,
25-
pub transfer_server: ServerConfig<transfer::config::ServiceConfig>,
25+
pub api_server: ServerConfig<api::config::ServiceConfig>,
2626
pub path: String,
2727
pub logger_mode: String,
2828
pub middleware_config: MiddlewareConfig,

src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ mod config;
1818
mod share;
1919
mod actix_middleware;
2020
mod utils;
21-
mod transfer;
21+
mod api;
2222
mod server;
2323

2424
async fn server_start(config: Configuration, collection: Arc<Collection>) -> Result<(), Error> {
2525
let index_server = index::server::IndexServer::new(config.index_server, Arc::clone(&collection)).run_with_restart();
26-
let transfer_server = transfer::server::TransferServer::new(config.transfer_server, Arc::clone(&collection)).run_with_restart();
26+
let transfer_server = api::server::APIServer::new(config.api_server, Arc::clone(&collection)).run_with_restart();
2727
// 追加していくの
2828

2929
let result = tokio::join!(

src/transfer/server.rs

Lines changed: 0 additions & 60 deletions
This file was deleted.

0 commit comments

Comments
 (0)