pub struct OnionClientAuthViewResponse {
pub requested: Option<String>,
pub credentials: HashMap<String, HiddenServiceCredential>,
}Expand description
Parsed response from the ONION_CLIENT_AUTH_VIEW command.
Contains credentials for accessing v3 hidden services that require client authentication.
§Example
use stem_rs::response::{ControlMessage, OnionClientAuthViewResponse};
// View all credentials
let msg = ControlMessage::from_str(
"250-ONION_CLIENT_AUTH_VIEW\r\n\
250-CLIENT service1 x25519:key1\r\n\
250-CLIENT service2 x25519:key2\r\n\
250 OK\r\n",
None,
false
).unwrap();
let response = OnionClientAuthViewResponse::from_message(&msg).unwrap();
assert!(response.requested.is_none()); // Viewing all
assert_eq!(response.credentials.len(), 2);Fields§
§requested: Option<String>The specific service ID that was requested, if any.
None if viewing all credentials, Some(service_id) if viewing
credentials for a specific hidden service.
credentials: HashMap<String, HiddenServiceCredential>Map of service IDs to their credentials.
Keys are hidden service addresses (without .onion suffix).
Implementations§
Source§impl OnionClientAuthViewResponse
impl OnionClientAuthViewResponse
Sourcepub fn from_message(message: &ControlMessage) -> Result<Self, Error>
pub fn from_message(message: &ControlMessage) -> Result<Self, Error>
Parses an ONION_CLIENT_AUTH_VIEW response from a control message.
Extracts credentials for one or all hidden services from the response.
§Arguments
message- The control message to parse
§Errors
Returns Error::Protocol if:
- The response status is not OK
- The response is empty
- The response doesn’t start with “ONION_CLIENT_AUTH_VIEW”
- A CLIENT line has fewer than 3 fields
- A CLIENT line doesn’t start with “CLIENT”
- The credential format is invalid (missing
:separator) - An attribute is not a key=value mapping
§Example
use stem_rs::response::{ControlMessage, OnionClientAuthViewResponse};
// View credentials for a specific service
let msg = ControlMessage::from_str(
"250-ONION_CLIENT_AUTH_VIEW myservice\r\n\
250-CLIENT myservice x25519:secretkey\r\n\
250 OK\r\n",
None,
false
).unwrap();
let response = OnionClientAuthViewResponse::from_message(&msg).unwrap();
assert_eq!(response.requested, Some("myservice".to_string()));
assert!(response.credentials.contains_key("myservice"));Trait Implementations§
Source§impl Clone for OnionClientAuthViewResponse
impl Clone for OnionClientAuthViewResponse
Source§fn clone(&self) -> OnionClientAuthViewResponse
fn clone(&self) -> OnionClientAuthViewResponse
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for OnionClientAuthViewResponse
impl RefUnwindSafe for OnionClientAuthViewResponse
impl Send for OnionClientAuthViewResponse
impl Sync for OnionClientAuthViewResponse
impl Unpin for OnionClientAuthViewResponse
impl UnwindSafe for OnionClientAuthViewResponse
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more