apollo_router/services/
mod.rs1use std::sync::Arc;
4
5use parking_lot::Mutex;
6
7pub(crate) use self::execution::service::*;
8pub(crate) use self::query_planner::*;
9pub(crate) use self::subgraph_service::*;
10pub(crate) use self::supergraph::service::*;
11use crate::graphql::Request;
12use crate::http_ext;
13pub use crate::http_ext::TryIntoHeaderName;
14pub use crate::http_ext::TryIntoHeaderValue;
15pub use crate::query_planner::OperationKind;
16pub(crate) use crate::services::connect::Request as ConnectRequest;
17pub(crate) use crate::services::connect::Response as ConnectResponse;
18pub(crate) use crate::services::execution::Request as ExecutionRequest;
19pub(crate) use crate::services::execution::Response as ExecutionResponse;
20pub(crate) use crate::services::fetch::FetchRequest;
21pub(crate) use crate::services::fetch::Response as FetchResponse;
22pub(crate) use crate::services::query_planner::Request as QueryPlannerRequest;
23pub(crate) use crate::services::query_planner::Response as QueryPlannerResponse;
24pub(crate) use crate::services::router::Request as RouterRequest;
25pub(crate) use crate::services::router::Response as RouterResponse;
26pub(crate) use crate::services::subgraph::Request as SubgraphRequest;
27pub(crate) use crate::services::subgraph::Response as SubgraphResponse;
28pub(crate) use crate::services::supergraph::Request as SupergraphRequest;
29pub(crate) use crate::services::supergraph::Response as SupergraphResponse;
30pub(crate) use crate::services::supergraph::service::SupergraphCreator;
31
32pub(crate) mod connect;
33pub(crate) mod connector;
34pub(crate) mod connector_service;
35pub mod execution;
36pub(crate) mod external;
37pub(crate) mod fetch;
38pub(crate) mod fetch_service;
39pub(crate) mod hickory_dns_connector;
40pub(crate) mod http;
41pub(crate) mod layers;
42pub(crate) mod new_service;
43pub(crate) mod query_planner;
44pub mod router;
45pub mod subgraph;
46pub(crate) mod subgraph_service;
47pub mod supergraph;
48
49impl AsRef<Request> for http_ext::Request<Request> {
50 fn as_ref(&self) -> &Request {
51 self.body()
52 }
53}
54
55impl AsRef<Request> for Arc<http_ext::Request<Request>> {
56 fn as_ref(&self) -> &Request {
57 self.body()
58 }
59}
60
61#[allow(missing_docs)]
63pub static APOLLO_KEY: Mutex<Option<String>> = Mutex::new(None);
64#[allow(missing_docs)]
65pub static APOLLO_GRAPH_REF: Mutex<Option<String>> = Mutex::new(None);
66
67pub(crate) fn apollo_key() -> Option<String> {
68 APOLLO_KEY.lock().clone()
69}
70
71pub(crate) fn apollo_graph_reference() -> Option<String> {
72 APOLLO_GRAPH_REF.lock().clone()
73}
74
75pub(crate) const MULTIPART_DEFER_SPEC_PARAMETER: &str = "deferSpec";
77pub(crate) const MULTIPART_DEFER_SPEC_VALUE: &str = "20220824";
78pub(crate) const MULTIPART_DEFER_ACCEPT: &str = "multipart/mixed;deferSpec=20220824";
79pub(crate) const MULTIPART_DEFER_CONTENT_TYPE: &str =
80 "multipart/mixed;boundary=\"graphql\";deferSpec=20220824";
81
82pub(crate) const MULTIPART_SUBSCRIPTION_ACCEPT: &str = "multipart/mixed;subscriptionSpec=1.0";
83pub(crate) const MULTIPART_SUBSCRIPTION_CONTENT_TYPE: &str =
84 "multipart/mixed;boundary=\"graphql\";subscriptionSpec=1.0";
85pub(crate) const MULTIPART_SUBSCRIPTION_SPEC_PARAMETER: &str = "subscriptionSpec";
86pub(crate) const MULTIPART_SUBSCRIPTION_SPEC_VALUE: &str = "1.0";