mirror of
https://github.com/YGGverse/Yoda.git
synced 2025-03-13 06:01:21 +00:00
delegate to driver implementation required references only
This commit is contained in:
parent
1d8b3b27b3
commit
dabff4f4cb
@ -77,8 +77,12 @@ impl Driver {
|
|||||||
) {
|
) {
|
||||||
match feature {
|
match feature {
|
||||||
Feature::Download { request } => match request {
|
Feature::Download { request } => match request {
|
||||||
Request::Gemini { uri } => {
|
Request::Gemini { uri } => gemini::request_async(
|
||||||
gemini::request_async(self, uri.clone(), cancellable.clone(), move |result| {
|
&self.profile,
|
||||||
|
&self.gemini,
|
||||||
|
uri.clone(),
|
||||||
|
cancellable.clone(),
|
||||||
|
move |result| {
|
||||||
callback(match result {
|
callback(match result {
|
||||||
Ok(response) => Response::Download {
|
Ok(response) => Response::Download {
|
||||||
base: uri.clone(),
|
base: uri.clone(),
|
||||||
@ -89,15 +93,19 @@ impl Driver {
|
|||||||
message: e.to_string(),
|
message: e.to_string(),
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
})
|
},
|
||||||
}
|
),
|
||||||
_ => callback(Response::Failure(Failure::Error {
|
_ => callback(Response::Failure(Failure::Error {
|
||||||
message: "Download feature yet not supported for this request".to_string(),
|
message: "Download feature yet not supported for this request".to_string(),
|
||||||
})), // @TODO or maybe panic as unexpected
|
})), // @TODO or maybe panic as unexpected
|
||||||
},
|
},
|
||||||
Feature::Default { request } => match request {
|
Feature::Default { request } => match request {
|
||||||
Request::Gemini { uri } => {
|
Request::Gemini { uri } => gemini::request_async(
|
||||||
gemini::request_async(self, uri.clone(), cancellable.clone(), move |result| {
|
&self.profile,
|
||||||
|
&self.gemini,
|
||||||
|
uri.clone(),
|
||||||
|
cancellable.clone(),
|
||||||
|
move |result| {
|
||||||
gemini::handle(
|
gemini::handle(
|
||||||
result,
|
result,
|
||||||
uri.clone(),
|
uri.clone(),
|
||||||
@ -105,14 +113,18 @@ impl Driver {
|
|||||||
false,
|
false,
|
||||||
callback.clone(),
|
callback.clone(),
|
||||||
)
|
)
|
||||||
})
|
},
|
||||||
}
|
),
|
||||||
Request::Titan { .. } => todo!(),
|
Request::Titan { .. } => todo!(),
|
||||||
Request::Undefined => todo!(),
|
Request::Undefined => todo!(),
|
||||||
},
|
},
|
||||||
Feature::Source { request } => match request {
|
Feature::Source { request } => match request {
|
||||||
Request::Gemini { uri } => {
|
Request::Gemini { uri } => gemini::request_async(
|
||||||
gemini::request_async(self, uri.clone(), cancellable.clone(), move |result| {
|
&self.profile,
|
||||||
|
&self.gemini,
|
||||||
|
uri.clone(),
|
||||||
|
cancellable.clone(),
|
||||||
|
move |result| {
|
||||||
gemini::handle(
|
gemini::handle(
|
||||||
result,
|
result,
|
||||||
uri.clone(),
|
uri.clone(),
|
||||||
@ -120,8 +132,8 @@ impl Driver {
|
|||||||
true,
|
true,
|
||||||
callback.clone(),
|
callback.clone(),
|
||||||
)
|
)
|
||||||
})
|
},
|
||||||
}
|
),
|
||||||
_ => callback(Response::Failure(Failure::Error {
|
_ => callback(Response::Failure(Failure::Error {
|
||||||
message: "Source view feature yet not supported for this request".to_string(),
|
message: "Source view feature yet not supported for this request".to_string(),
|
||||||
})), // @TODO or maybe panic as unexpected
|
})), // @TODO or maybe panic as unexpected
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use super::{
|
use super::{
|
||||||
response::{Certificate, Failure, Input},
|
response::{Certificate, Failure, Input},
|
||||||
Driver, Response,
|
Profile, Response,
|
||||||
};
|
};
|
||||||
use gtk::{
|
use gtk::{
|
||||||
gio::Cancellable,
|
gio::Cancellable,
|
||||||
@ -10,18 +10,20 @@ use std::rc::Rc;
|
|||||||
|
|
||||||
/// Shared request interface for Gemini protocol
|
/// Shared request interface for Gemini protocol
|
||||||
pub fn request_async(
|
pub fn request_async(
|
||||||
driver: &Driver,
|
profile: &Rc<Profile>,
|
||||||
|
client: &Rc<ggemini::Client>,
|
||||||
uri: Uri,
|
uri: Uri,
|
||||||
cancellable: Cancellable,
|
cancellable: Cancellable,
|
||||||
callback: impl Fn(Result<ggemini::client::Response, ggemini::client::Error>) + 'static,
|
callback: impl Fn(Result<ggemini::client::Response, ggemini::client::Error>) + 'static,
|
||||||
) {
|
) {
|
||||||
driver.gemini.request_async(
|
let request = uri.to_string();
|
||||||
ggemini::client::Request::gemini(uri.clone()),
|
client.request_async(
|
||||||
|
ggemini::client::Request::gemini(uri),
|
||||||
Priority::DEFAULT,
|
Priority::DEFAULT,
|
||||||
cancellable.clone(),
|
cancellable,
|
||||||
// Search for user certificate match request
|
// Search for user certificate match request
|
||||||
// * @TODO this feature does not support multi-protocol yet
|
// * @TODO this feature does not support multi-protocol yet
|
||||||
match driver.profile.identity.gemini.match_scope(&uri.to_string()) {
|
match profile.identity.gemini.match_scope(&request) {
|
||||||
Some(identity) => match identity.to_tls_certificate() {
|
Some(identity) => match identity.to_tls_certificate() {
|
||||||
Ok(certificate) => Some(certificate),
|
Ok(certificate) => Some(certificate),
|
||||||
Err(_) => todo!(),
|
Err(_) => todo!(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user