Skip to content

Commit 68d5a5f

Browse files
committed
core: Refactor fetch error functions to return plain ErrorResponse
1 parent 661b700 commit 68d5a5f

File tree

4 files changed

+16
-22
lines changed

4 files changed

+16
-22
lines changed

core/src/backend/navigator.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -459,10 +459,7 @@ pub fn async_return<SuccessType: 'static, ErrorType: 'static>(
459459

460460
/// This creates and returns the generic ErrorResponse for an invalid URL
461461
/// used in the NavigatorBackend fetch methods.
462-
pub fn create_fetch_error<ErrorType: Display>(
463-
url: &str,
464-
error: ErrorType,
465-
) -> Result<Box<dyn SuccessResponse>, ErrorResponse> {
462+
pub fn create_fetch_error<ErrorType: Display>(url: &str, error: ErrorType) -> ErrorResponse {
466463
create_specific_fetch_error("Invalid URL", url, error)
467464
}
468465

@@ -472,17 +469,17 @@ pub fn create_specific_fetch_error<ErrorType: Display>(
472469
reason: &str,
473470
url: &str,
474471
error: ErrorType,
475-
) -> Result<Box<dyn SuccessResponse>, ErrorResponse> {
472+
) -> ErrorResponse {
476473
let message = if error.to_string() == "" {
477474
format!("{reason} {url}")
478475
} else {
479476
format!("{reason} {url}: {error}")
480477
};
481478
let error = Error::FetchError(message);
482-
Err(ErrorResponse {
479+
ErrorResponse {
483480
url: url.to_string(),
484481
error,
485-
})
482+
}
486483
}
487484

488485
// Url doesn't implement from_file_path and to_file_path for WASM targets.
@@ -624,7 +621,7 @@ pub fn fetch_path<NavigatorType: NavigatorBackend>(
624621

625622
let url = match navigator.resolve_url(url) {
626623
Ok(url) => url,
627-
Err(e) => return async_return(create_fetch_error(url, e)),
624+
Err(e) => return async_return(Err(create_fetch_error(url, e))),
628625
};
629626
let path = if url.scheme() == "file" {
630627
// Flash supports query parameters with local urls.
@@ -636,11 +633,11 @@ pub fn fetch_path<NavigatorType: NavigatorBackend>(
636633
match url_to_file_path(&filesystem_url) {
637634
Ok(path) => path,
638635
Err(_) => {
639-
return async_return(create_specific_fetch_error(
636+
return async_return(Err(create_specific_fetch_error(
640637
"Unable to create path out of URL",
641638
url.as_str(),
642639
"",
643-
))
640+
)))
644641
}
645642
}
646643
} else if let Some(base_path) = base_path {
@@ -654,11 +651,11 @@ pub fn fetch_path<NavigatorType: NavigatorBackend>(
654651
}
655652
path
656653
} else {
657-
return async_return(create_specific_fetch_error(
654+
return async_return(Err(create_specific_fetch_error(
658655
&format!("{navigator_name} can't fetch non-local URL"),
659656
url.as_str(),
660657
"",
661-
));
658+
)));
662659
};
663660

664661
Box::pin(async move {

frontend-utils/src/backends/navigator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ impl<F: FutureSpawner + 'static, I: NavigatorInterface> NavigatorBackend
186186
let mut processed_url = match self.resolve_url(request.url()) {
187187
Ok(url) => url,
188188
Err(e) => {
189-
return async_return(create_fetch_error(request.url(), e));
189+
return async_return(Err(create_fetch_error(request.url(), e)));
190190
}
191191
};
192192

tests/framework/src/backends/navigator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ impl NavigatorBackend for TestNavigatorBackend {
177177

178178
let url = match self.resolve_url(request.url()) {
179179
Ok(url) => url,
180-
Err(e) => return async_return(create_fetch_error(request.url(), e)),
180+
Err(e) => return async_return(Err(create_fetch_error(request.url(), e))),
181181
};
182182

183183
let base_path = self.relative_base_path.clone();

web/src/navigator.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ impl NavigatorBackend for WebNavigatorBackend {
299299
let url = match self.resolve_url(request.url()) {
300300
Ok(url) => url,
301301
Err(e) => {
302-
return async_return(create_fetch_error(request.url(), e));
302+
return async_return(Err(create_fetch_error(request.url(), e)));
303303
}
304304
};
305305

@@ -346,11 +346,11 @@ impl NavigatorBackend for WebNavigatorBackend {
346346
let web_request = match WebRequest::new_with_str_and_init(url.as_str(), &init) {
347347
Ok(web_request) => web_request,
348348
Err(_) => {
349-
return create_specific_fetch_error(
349+
return Err(create_specific_fetch_error(
350350
"Unable to create request for",
351351
url.as_str(),
352352
"",
353-
);
353+
));
354354
}
355355
};
356356

@@ -370,14 +370,11 @@ impl NavigatorBackend for WebNavigatorBackend {
370370
.await
371371
.map_err(|_| {
372372
if url.scheme() == "file" {
373-
match create_specific_fetch_error(
373+
create_specific_fetch_error(
374374
"WASM target can't fetch local URL",
375375
url.as_str(),
376376
"",
377-
) {
378-
Err(e) => e,
379-
Ok(_) => unreachable!("create_specific_fetch_error never returns Ok"),
380-
}
377+
)
381378
} else {
382379
ErrorResponse {
383380
url: url.to_string(),

0 commit comments

Comments
 (0)