mirror of
https://github.com/YGGverse/Yoda.git
synced 2025-03-13 06:01:21 +00:00
reorganize arguments, add comments
This commit is contained in:
parent
f2e4d57d69
commit
983655e934
@ -18,7 +18,7 @@ pub fn send(
|
|||||||
uri.clone(),
|
uri.clone(),
|
||||||
cancellable.clone(),
|
cancellable.clone(),
|
||||||
move |result| match result {
|
move |result| match result {
|
||||||
Ok(response) => handle(response, uri, cancellable, referrer, feature, callback),
|
Ok(response) => handle(response, uri, referrer, feature, cancellable, callback),
|
||||||
Err(e) => callback(Response::Failure(Failure::Error {
|
Err(e) => callback(Response::Failure(Failure::Error {
|
||||||
message: e.to_string(),
|
message: e.to_string(),
|
||||||
})),
|
})),
|
||||||
@ -56,9 +56,9 @@ fn request(
|
|||||||
fn handle(
|
fn handle(
|
||||||
response: ggemini::client::connection::Response,
|
response: ggemini::client::connection::Response,
|
||||||
base: Uri,
|
base: Uri,
|
||||||
cancellable: Cancellable,
|
|
||||||
referrer: Vec<Request>,
|
referrer: Vec<Request>,
|
||||||
feature: Feature,
|
feature: Feature,
|
||||||
|
cancellable: Cancellable,
|
||||||
callback: impl FnOnce(Response) + 'static,
|
callback: impl FnOnce(Response) + 'static,
|
||||||
) {
|
) {
|
||||||
use ggemini::client::connection::response::{data::Text, meta::Status};
|
use ggemini::client::connection::response::{data::Text, meta::Status};
|
||||||
@ -118,7 +118,7 @@ fn handle(
|
|||||||
},
|
},
|
||||||
// https://geminiprotocol.net/docs/protocol-specification.gmi#status-30-temporary-redirection
|
// https://geminiprotocol.net/docs/protocol-specification.gmi#status-30-temporary-redirection
|
||||||
Status::Redirect => callback(redirect(
|
Status::Redirect => callback(redirect(
|
||||||
response.meta.data,
|
response,
|
||||||
base,
|
base,
|
||||||
referrer,
|
referrer,
|
||||||
cancellable,
|
cancellable,
|
||||||
@ -127,7 +127,7 @@ fn handle(
|
|||||||
)),
|
)),
|
||||||
// https://geminiprotocol.net/docs/protocol-specification.gmi#status-31-permanent-redirection
|
// https://geminiprotocol.net/docs/protocol-specification.gmi#status-31-permanent-redirection
|
||||||
Status::PermanentRedirect => callback(redirect(
|
Status::PermanentRedirect => callback(redirect(
|
||||||
response.meta.data,
|
response,
|
||||||
base,
|
base,
|
||||||
referrer,
|
referrer,
|
||||||
cancellable,
|
cancellable,
|
||||||
@ -163,8 +163,11 @@ fn handle(
|
|||||||
|
|
||||||
/// Shared redirection `Response` builder
|
/// Shared redirection `Response` builder
|
||||||
fn redirect(
|
fn redirect(
|
||||||
data: Option<ggemini::client::connection::response::meta::Data>,
|
// Subject to parse
|
||||||
|
response: ggemini::client::connection::Response,
|
||||||
|
// Wanted to process relative links
|
||||||
base: Uri,
|
base: Uri,
|
||||||
|
// List of previous requests to handle redirection rules
|
||||||
referrer: Vec<Request>,
|
referrer: Vec<Request>,
|
||||||
cancellable: Cancellable,
|
cancellable: Cancellable,
|
||||||
priority: Priority,
|
priority: Priority,
|
||||||
@ -177,8 +180,8 @@ fn redirect(
|
|||||||
message: "Max redirection count reached".to_string(),
|
message: "Max redirection count reached".to_string(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
match data {
|
// Target URL expected from client response meta data
|
||||||
// Target address could be relative, parse using base Uri
|
match response.meta.data {
|
||||||
Some(target) => match Uri::parse_relative(&base, target.as_str(), UriFlags::NONE) {
|
Some(target) => match Uri::parse_relative(&base, target.as_str(), UriFlags::NONE) {
|
||||||
Ok(target) => {
|
Ok(target) => {
|
||||||
// Disallow external redirection
|
// Disallow external redirection
|
||||||
|
Loading…
x
Reference in New Issue
Block a user