feat: define web types for adapters and inject them into app ctx

This commit is contained in:
Aravinth Manivannan 2024-05-08 15:01:24 +05:30
parent 32b4ca24f3
commit 8fb056a669
Signed by: realaravinth
GPG key ID: F8F50389936984FF
3 changed files with 37 additions and 10 deletions

View file

@ -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> =

View file

@ -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>>;

View file

@ -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());
};