wip: implement switching protocols (http upgrade)

This commit is contained in:
Jun Kurihara 2023-11-28 18:04:12 +09:00
commit 8f77ce9447
No known key found for this signature in database
GPG key ID: D992B3E3DE1DED23
4 changed files with 65 additions and 51 deletions

View file

@ -28,6 +28,13 @@ pub enum HttpError {
#[error("Failed to generated downstream response: {0}")]
FailedToGenerateDownstreamResponse(String),
#[error("Failed to upgrade connection")]
FailedToUpgrade,
#[error("Request does not have an upgrade extension")]
NoUpgradeExtensionInRequest,
#[error("Response does not have an upgrade extension")]
NoUpgradeExtensionInResponse,
#[error(transparent)]
Other(#[from] anyhow::Error),
}
@ -44,6 +51,9 @@ impl From<HttpError> for StatusCode {
HttpError::FailedToGenerateUpstreamRequest(_) => StatusCode::INTERNAL_SERVER_ERROR,
HttpError::FailedToAddSetCookeInResponse => StatusCode::INTERNAL_SERVER_ERROR,
HttpError::FailedToGenerateDownstreamResponse(_) => StatusCode::INTERNAL_SERVER_ERROR,
HttpError::FailedToUpgrade => StatusCode::INTERNAL_SERVER_ERROR,
HttpError::NoUpgradeExtensionInRequest => StatusCode::BAD_REQUEST,
HttpError::NoUpgradeExtensionInResponse => StatusCode::BAD_GATEWAY,
_ => StatusCode::INTERNAL_SERVER_ERROR,
}
}