feat: complete Epic 1 production foundation
This commit is contained in:
@@ -4,7 +4,7 @@ mod model;
|
||||
|
||||
use async_trait::async_trait;
|
||||
use crank_core::{
|
||||
AdapterResponse, ExecutionMode, PreparedRequest, Protocol, ProtocolAdapter,
|
||||
AdapterResponse, DispatchEvidence, ExecutionMode, PreparedRequest, Protocol, ProtocolAdapter,
|
||||
ProtocolAdapterError, RestTarget, RuntimeRequestContext, Target,
|
||||
};
|
||||
|
||||
@@ -33,6 +33,7 @@ impl ProtocolAdapter for RestAdapter {
|
||||
path_params: prepared.path_params.clone(),
|
||||
query_params: prepared.query_params.clone(),
|
||||
headers: prepared.headers.clone(),
|
||||
trusted_header_names: prepared.trusted_header_names.clone(),
|
||||
body: prepared.body.clone(),
|
||||
timeout_ms: prepared.timeout_ms,
|
||||
};
|
||||
@@ -55,6 +56,43 @@ fn rest_target(target: &Target) -> Result<&RestTarget, ProtocolAdapterError> {
|
||||
|
||||
impl From<RestAdapterError> for ProtocolAdapterError {
|
||||
fn from(value: RestAdapterError) -> Self {
|
||||
ProtocolAdapterError::Message(value.to_string())
|
||||
match value {
|
||||
RestAdapterError::InvalidBaseUrl { .. }
|
||||
| RestAdapterError::InvalidConfiguration { .. } => Self::InvalidConfiguration,
|
||||
RestAdapterError::InvalidPathParameter { .. }
|
||||
| RestAdapterError::InvalidQueryParameter { .. }
|
||||
| RestAdapterError::InvalidHeaderName { .. }
|
||||
| RestAdapterError::InvalidHeaderValue { .. } => Self::InvalidPreparedRequest,
|
||||
RestAdapterError::RedirectNotAllowed => Self::TargetRejected,
|
||||
RestAdapterError::TargetNotAllowed { .. } => Self::TargetRejected,
|
||||
RestAdapterError::RequestTooLarge { .. } => Self::RequestTooLarge,
|
||||
RestAdapterError::ResponseTooLarge { .. } => Self::ResponseTooLarge {
|
||||
dispatch: DispatchEvidence::MayHaveDispatched,
|
||||
},
|
||||
RestAdapterError::Transport { timeout, connect } if timeout => Self::Timeout {
|
||||
dispatch: if connect {
|
||||
DispatchEvidence::NotDispatched
|
||||
} else {
|
||||
DispatchEvidence::MayHaveDispatched
|
||||
},
|
||||
},
|
||||
RestAdapterError::Transport { connect, .. } => Self::Transport {
|
||||
dispatch: if connect {
|
||||
DispatchEvidence::NotDispatched
|
||||
} else {
|
||||
DispatchEvidence::MayHaveDispatched
|
||||
},
|
||||
},
|
||||
RestAdapterError::WindowExpired => Self::Timeout {
|
||||
dispatch: DispatchEvidence::MayHaveDispatched,
|
||||
},
|
||||
RestAdapterError::UnexpectedStatus { status, .. } => Self::UnexpectedStatus {
|
||||
status,
|
||||
dispatch: DispatchEvidence::MayHaveDispatched,
|
||||
},
|
||||
RestAdapterError::InvalidSseEvent => Self::InvalidResponse {
|
||||
dispatch: DispatchEvidence::MayHaveDispatched,
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user