aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2022-07-03 04:59:07 +0000
committerFuwn <[email protected]>2022-07-03 04:59:07 +0000
commita17c7dbeffcfd332c3e87410a6c78cfb1ab3e38f (patch)
treef74f1aff4740539956b14240bd8016bd2d81f38e /src
parentfeat: raw proxy route (diff)
downloadseptember-a17c7dbeffcfd332c3e87410a6c78cfb1ab3e38f.tar.xz
september-a17c7dbeffcfd332c3e87410a6c78cfb1ab3e38f.zip
feat(response): url error handling
Diffstat (limited to 'src')
-rw-r--r--src/response.rs30
1 files changed, 25 insertions, 5 deletions
diff --git a/src/response.rs b/src/response.rs
index f01f7f0..486ea3e 100644
--- a/src/response.rs
+++ b/src/response.rs
@@ -29,7 +29,7 @@ pub async fn default(
let mut is_proxy = false;
let mut is_raw = false;
// Try to construct a Gemini URL
- let url = make_url(
+ let url = match make_url(
&format!("{}{}", req.path(), {
if !req.query_string().is_empty() || req.uri().to_string().ends_with('?')
{
@@ -41,8 +41,16 @@ pub async fn default(
false,
&mut is_proxy,
&mut is_raw,
- )
- .unwrap();
+ ) {
+ Ok(url) => url,
+ Err(e) => {
+ return Ok(
+ HttpResponse::BadRequest()
+ .content_type("text/plain")
+ .body(format!("{}", e)),
+ );
+ }
+ };
// Make a request to get Gemini content and time it.
let mut timer = Instant::now();
let mut response = match gmi::request::make_request(&url) {
@@ -52,9 +60,21 @@ pub async fn default(
}
};
if response.data.is_empty() {
- response = match gmi::request::make_request(
- &make_url(req.path(), true, &mut is_proxy, &mut is_raw).unwrap(),
+ response = match gmi::request::make_request(&match make_url(
+ req.path(),
+ true,
+ &mut is_proxy,
+ &mut is_raw,
) {
+ Ok(url) => url,
+ Err(e) => {
+ return Ok(
+ HttpResponse::BadRequest()
+ .content_type("text/plain")
+ .body(format!("{}", e)),
+ );
+ }
+ }) {
Ok(response) => response,
Err(e) => {
return Ok(HttpResponse::Ok().body(e.to_string()));