Skip to content
This repository was archived by the owner on Mar 18, 2025. It is now read-only.

Commit 856f8ab

Browse files
committed
ok separated config now
1 parent 1cc4035 commit 856f8ab

25 files changed

Lines changed: 282 additions & 280 deletions

.vscode/settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"yaml.schemas": {
3-
"./crates/conductor/src/config/conductor.schema.json": "*.yaml"
3+
"./crates/config/conductor.schema.json": "*.yaml"
44
},
55
"rust-analyzer.linkedProjects": ["./Cargo.toml"]
66
}

Cargo.lock

Lines changed: 14 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ serde = { version = "1.0.192", features = ["derive"] }
88
serde_json = "1.0.108"
99
tokio = { version = "1.34.0", features = ["macros", "rt-multi-thread"] }
1010
hyper = { version = "0.14.27", features = ["http1", "http2", "client"] }
11+
tracing = "0.1.40"

crates/benches/Cargo.toml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ serde_json = { workspace = true }
1212
tokio = { workspace = true }
1313
hyper = { workspace = true }
1414

15-
[lib]
16-
name = "benches"
17-
path = "src/bench.rs"
18-
1915
[[bench]]
2016
name = "bench"
21-
path = "src/bench.rs"
17+
path = "bench.rs"
2218
harness = false

crates/conductor/Cargo.toml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,14 @@ name = "conductor"
99
path = "src/main.rs"
1010
bench = false
1111

12-
[[test]]
13-
name = "generate-config-schema"
14-
path = "src/config/generate-json-schema.rs"
15-
bench = false
16-
1712
[dependencies]
1813
serde = { workspace = true }
1914
serde_json = { workspace = true }
2015
tokio = { workspace = true }
2116
hyper = { workspace = true }
17+
conductor_config = { path = "../config" }
2218
axum = { version = "0.6.20", features = ["headers"] }
23-
serde_yaml = "0.9.27"
24-
tracing = "0.1.40"
19+
tracing = { workspace = true }
2520
tracing-subscriber = "0.3.17"
2621
async-trait = "0.1.74"
2722
hyper-tls = "0.5.0"
@@ -35,7 +30,6 @@ graphql-parser = "0.4.0"
3530
futures = { workspace = true }
3631
axum-test = "13.1.1"
3732
openssl = { version = "0.10", features = ["vendored"] }
38-
schemars = "0.8.16"
3933

4034
[dev-dependencies]
4135
httpmock = "0.6"

crates/conductor/src/endpoint/endpoint_runtime.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use crate::{
2-
config::EndpointDefinition,
32
graphql_utils::GraphQLResponse,
43
plugins::{flow_context::FlowContext, plugin_manager::PluginManager},
54
source::base_source::{SourceError, SourceService},
@@ -8,6 +7,7 @@ use axum::{
87
body::{Body, BoxBody},
98
response::IntoResponse,
109
};
10+
use conductor_config::EndpointDefinition;
1111
use http::StatusCode;
1212
use std::sync::Arc;
1313

crates/conductor/src/lib.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
1-
pub mod config;
21
pub mod endpoint;
32
pub mod graphql_utils;
43
pub mod http_utils;
54
pub mod plugins;
65
pub mod source;
76
pub mod test;
8-
pub mod utils;
97

108
use std::sync::Arc;
119

1210
use axum::{Extension, Router, Server};
1311
use axum_macros::debug_handler;
14-
use config::{load_config, ConductorConfig};
12+
use conductor_config::{load_config, ConductorConfig};
1513
use endpoint::endpoint_runtime::EndpointRuntime;
1614

1715
use axum::http::Request;
@@ -24,11 +22,11 @@ use hyper::Body;
2422
use plugins::flow_context::FlowContext;
2523
use tracing::{debug, info};
2624

27-
use crate::config::SourceDefinition;
2825
use crate::graphql_utils::ParsedGraphQLRequest;
2926
use crate::http_utils::extract_graphql_from_post_request;
3027
use crate::plugins::plugin_manager::PluginManager;
3128
use crate::source::graphql_source::GraphQLSourceService;
29+
use conductor_config::SourceDefinition;
3230

3331
pub struct RouterState {
3432
pub plugin_manager: Arc<PluginManager>,

crates/conductor/src/plugins/cors.rs

Lines changed: 1 addition & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,12 @@
1-
use std::time::Duration;
2-
1+
use conductor_config::plugins::{CorsListStringConfig, CorsPluginConfig, CorsStringConfig};
32
use http::{HeaderValue, Method};
4-
use schemars::JsonSchema;
5-
use serde::{Deserialize, Deserializer};
63
use tower_http::cors::{Any, CorsLayer};
74
use tracing::{debug, info};
85

96
use super::core::Plugin;
107

118
pub struct CorsPlugin(pub CorsPluginConfig);
129

13-
#[derive(Deserialize, Debug, Clone, JsonSchema)]
14-
#[serde(untagged)]
15-
pub enum CorsListStringConfig {
16-
#[serde(deserialize_with = "deserialize_wildcard")]
17-
Wildcard,
18-
List(Vec<String>),
19-
}
20-
21-
#[derive(Deserialize, Debug, Clone, JsonSchema)]
22-
#[serde(untagged)]
23-
pub enum CorsStringConfig {
24-
#[serde(deserialize_with = "deserialize_wildcard")]
25-
Wildcard,
26-
Value(String),
27-
}
28-
29-
fn deserialize_wildcard<'de, D>(deserializer: D) -> Result<(), D::Error>
30-
where
31-
D: Deserializer<'de>,
32-
{
33-
#[derive(Deserialize)]
34-
enum Helper {
35-
#[serde(rename = "*")]
36-
Wildcard,
37-
}
38-
39-
Helper::deserialize(deserializer).map(|_| ())
40-
}
41-
42-
#[derive(Deserialize, Debug, Clone, JsonSchema)]
43-
pub struct CorsPluginConfig {
44-
/// Access-Control-Allow-Credentials (default: false)
45-
allow_credentials: Option<bool>,
46-
/// Access-Control-Allow-Methods (default: Any)
47-
allowed_methods: Option<CorsListStringConfig>,
48-
/// Access-Control-Allow-Origin (default: Any)
49-
allowed_origin: Option<CorsStringConfig>,
50-
/// Access-Control-Allow-Headers (default: Any)
51-
allowed_headers: Option<CorsListStringConfig>,
52-
/// Access-Control-Allow-Origin (default: false)
53-
allow_private_network: Option<bool>,
54-
/// Access-Control-Max-Age (default: empty)
55-
max_age: Option<Duration>,
56-
}
57-
58-
impl CorsPluginConfig {
59-
pub fn is_empty_config(&self) -> bool {
60-
self.allow_credentials.is_none()
61-
&& self.allowed_methods.is_none()
62-
&& self.allowed_origin.is_none()
63-
&& self.allowed_headers.is_none()
64-
&& self.allow_private_network.is_none()
65-
&& self.max_age.is_none()
66-
}
67-
}
68-
6910
#[async_trait::async_trait]
7011
impl Plugin for CorsPlugin {
7112
fn on_endpoint_creation(

crates/conductor/src/plugins/graphiql_plugin.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ async fn graphiql_plugin_input_output() {
9292

9393
#[tokio::test]
9494
async fn graphiql_plugin_render_cases() {
95-
use crate::config::{EndpointDefinition, PluginDefinition};
95+
use conductor_config::{EndpointDefinition, PluginDefinition};
9696
use http::{header::CONTENT_TYPE, StatusCode};
9797

9898
let server = crate::test::utils::ConductorTest::empty()

0 commit comments

Comments
 (0)