summaryrefslogtreecommitdiff
path: root/ext/http/service.rs
diff options
context:
space:
mode:
authorLeo Kettmeir <crowlkats@toaxl.com>2024-10-18 15:57:12 -0700
committerGitHub <noreply@github.com>2024-10-18 15:57:12 -0700
commit2c3900370ac3e0b62f1e0dfb86a883c75952146d (patch)
treedd487491bbb1bbfde8546ad8c533acad64330b4e /ext/http/service.rs
parent8ca8174c81a3de35bcb02fc371c90f9d0a7303ab (diff)
refactor(ext/http): use concrete error types (#26377)
Diffstat (limited to 'ext/http/service.rs')
-rw-r--r--ext/http/service.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/ext/http/service.rs b/ext/http/service.rs
index 787e9babf..75f93d77c 100644
--- a/ext/http/service.rs
+++ b/ext/http/service.rs
@@ -2,7 +2,6 @@
use crate::request_properties::HttpConnectionProperties;
use crate::response_body::ResponseBytesInner;
use crate::response_body::ResponseStreamResult;
-use deno_core::error::AnyError;
use deno_core::futures::ready;
use deno_core::BufView;
use deno_core::OpState;
@@ -206,6 +205,10 @@ pub(crate) async fn handle_request(
Ok(response)
}
+#[derive(Debug, thiserror::Error)]
+#[error("upgrade unavailable")]
+pub struct UpgradeUnavailableError;
+
struct HttpRecordInner {
server_state: SignallingRc<HttpServerState>,
request_info: HttpConnectionProperties,
@@ -344,14 +347,14 @@ impl HttpRecord {
}
/// Perform the Hyper upgrade on this record.
- pub fn upgrade(&self) -> Result<OnUpgrade, AnyError> {
+ pub fn upgrade(&self) -> Result<OnUpgrade, UpgradeUnavailableError> {
// Manually perform the upgrade. We're peeking into hyper's underlying machinery here a bit
self
.self_mut()
.request_parts
.extensions
.remove::<OnUpgrade>()
- .ok_or_else(|| AnyError::msg("upgrade unavailable"))
+ .ok_or(UpgradeUnavailableError)
}
/// Take the Hyper body from this record.
@@ -515,7 +518,7 @@ pub struct HttpRecordResponse(ManuallyDrop<Rc<HttpRecord>>);
impl Body for HttpRecordResponse {
type Data = BufView;
- type Error = AnyError;
+ type Error = deno_core::error::AnyError;
fn poll_frame(
self: Pin<&mut Self>,
@@ -640,7 +643,7 @@ mod tests {
}
#[tokio::test]
- async fn test_handle_request() -> Result<(), AnyError> {
+ async fn test_handle_request() -> Result<(), deno_core::error::AnyError> {
let (tx, mut rx) = tokio::sync::mpsc::channel(10);
let server_state = HttpServerState::new();
let server_state_check = server_state.clone();