feat: define web types for adapters and inject them into app ctx
This commit is contained in:
parent
32b4ca24f3
commit
8fb056a669
|
@ -30,7 +30,7 @@ async fn handler(
|
|||
let oauth_auth_req_uri_adapter = &forges
|
||||
.get_forge_factory(&SupportedForges::Forgejo)
|
||||
.unwrap()
|
||||
.get_oauth_auth_req_uri_adapter();
|
||||
.oauth_auth_req_uri_adapter();
|
||||
|
||||
let process_authorization_response_redirect_uri = Url::parse(&format!(
|
||||
"{}://{}{}",
|
||||
|
@ -95,7 +95,7 @@ mod tests {
|
|||
let mut mock_forge_factory = MockForgeAdapterFactoryInterface::default();
|
||||
let a = mock_oauth_req_uri.clone();
|
||||
mock_forge_factory
|
||||
.expect_get_oauth_auth_req_uri_adapter()
|
||||
.expect_oauth_auth_req_uri_adapter()
|
||||
.times(1)
|
||||
.returning(move || a.clone());
|
||||
let mock_forge_factory: Arc<dyn ForgeAdapterFactoryInterface> =
|
||||
|
|
|
@ -3,12 +3,27 @@ use std::sync::Arc;
|
|||
use actix_web::web;
|
||||
|
||||
use crate::auth::adapter::out::forge::forge_repository::ForgeRepositoryInterface;
|
||||
use crate::auth::application::port::out::db::save_oauth_state::SaveOAuthState;
|
||||
use crate::auth::application::port::out::db::{
|
||||
delete_oauth_state::DeleteOAuthState, oauth_state_exists::OAuthStateExists,
|
||||
save_oauth_access_token::SaveOAuthAccessToken, save_oauth_state::SaveOAuthState,
|
||||
};
|
||||
use crate::auth::application::port::out::forge::{
|
||||
get_username::GetUsername, request_access_token::RequestAccessToken,
|
||||
};
|
||||
pub(super) use crate::utils::random_string::WebGenerateRandomStringInterface;
|
||||
|
||||
use super::RoutesRepository;
|
||||
|
||||
pub type WebForgeRepositoryInterface = web::Data<Arc<dyn ForgeRepositoryInterface>>;
|
||||
pub type WebSaveOauthState = web::Data<Arc<dyn SaveOAuthState>>;
|
||||
|
||||
pub type WebRouteRepository = web::Data<Arc<RoutesRepository>>;
|
||||
|
||||
pub type WebSettings = web::Data<crate::settings::Settings>;
|
||||
|
||||
pub type WebSaveOauthState = web::Data<Arc<dyn SaveOAuthState>>;
|
||||
pub type WebOauthStateExists = web::Data<Arc<dyn OAuthStateExists>>;
|
||||
pub type WebDeleteOauthState = web::Data<Arc<dyn DeleteOAuthState>>;
|
||||
pub type WebSaveOAuthAccessToken = web::Data<Arc<dyn SaveOAuthAccessToken>>;
|
||||
|
||||
pub type WebGetUsername = web::Data<Arc<dyn GetUsername>>;
|
||||
pub type WebRequestAccessToken = web::Data<Arc<dyn RequestAccessToken>>;
|
||||
|
|
|
@ -10,7 +10,7 @@ use crate::settings;
|
|||
use out::db::postgres::DBOutPostgresAdapter;
|
||||
use out::forge::{forge_repository::ForgeRepository, forgejo::Forgejo};
|
||||
|
||||
use input::web::types;
|
||||
use input::web::types::*;
|
||||
|
||||
pub fn load_adapters(
|
||||
pool: PgPool,
|
||||
|
@ -23,17 +23,29 @@ pub fn load_adapters(
|
|||
);
|
||||
|
||||
let forge_repository_interface =
|
||||
types::WebForgeRepositoryInterface::new(Arc::new(ForgeRepository::new(forgejo)));
|
||||
let db = DBOutPostgresAdapter::new(pool);
|
||||
let save_oauth_state_adapter: types::WebSaveOauthState =
|
||||
types::WebSaveOauthState::new(Arc::new(db.clone()));
|
||||
WebForgeRepositoryInterface::new(Arc::new(ForgeRepository::new(forgejo)));
|
||||
|
||||
let s = types::WebSettings::new(settings.clone());
|
||||
let db = DBOutPostgresAdapter::new(pool);
|
||||
let save_oauth_state_adapter: WebSaveOauthState = WebSaveOauthState::new(Arc::new(db.clone()));
|
||||
let delete_oauth_state_adapter: WebDeleteOauthState =
|
||||
WebDeleteOauthState::new(Arc::new(db.clone()));
|
||||
let save_oauth_access_token: WebSaveOAuthAccessToken =
|
||||
WebSaveOAuthAccessToken::new(Arc::new(db.clone()));
|
||||
let oauth_state_exists_adapter: WebOauthStateExists =
|
||||
WebOauthStateExists::new(Arc::new(db.clone()));
|
||||
|
||||
let s = WebSettings::new(settings.clone());
|
||||
|
||||
let f = move |cfg: &mut web::ServiceConfig| {
|
||||
cfg.app_data(save_oauth_state_adapter);
|
||||
cfg.app_data(delete_oauth_state_adapter);
|
||||
cfg.app_data(save_oauth_access_token);
|
||||
cfg.app_data(oauth_state_exists_adapter);
|
||||
|
||||
cfg.app_data(forge_repository_interface);
|
||||
|
||||
cfg.app_data(s);
|
||||
|
||||
cfg.configure(input::web::load_ctx());
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue