Skip to main content

AccountDid

Struct AccountDid 

Source
pub struct AccountDid {
    did: String,
    host: String,
    port: Option<u16>,
}
Expand description

A validated did:web belonging to one agent.

Held as the exact DID string plus its decoded authority, so that neither the identifier nor the fetch URL has to be recomputed — and so that the decoded form can never disagree with the encoded one.

Fields§

§did: String

The DID exactly as it is written, port colon still encoded.

§host: String

Decoded hostname, without a port.

§port: Option<u16>

Decoded port, if the DID carried one.

Implementations§

Source§

impl AccountDid

Source

pub fn mint(zone: &Zone, account_id: &str) -> Result<Self, DidError>

Mints the DID for account_id within zone.

Produces did:web:<account_id>.<zone host>, which resolves at https://<account_id>.<zone host>/.well-known/did.json — no port, because the spec allows one only for a bare loopback hostname and an account is a subdomain of its zone.

Source

pub fn parse(did: &str) -> Result<Self, DidError>

Parses and validates an agent did:web.

Source

pub fn account_id(&self) -> &str

The agent’s own label: the leftmost component of the hostname.

Source

pub fn host(&self) -> &str

The decoded hostname, without any port.

Source

pub fn port(&self) -> Option<u16>

The decoded port, if this is a development DID that carries one.

Source

pub fn authority(&self) -> String

The decoded authority: host, or host:port for a development DID.

This is the did:web identifier with its port colon decoded, which is what an atproto record key may contain — : is in the record-key character set and % is not. Anything keying a record by the server a DID names has to use this rather than the encoded form Self::as_str carries, and both sides of bot.did.operator do: didbot operate writes at this key and the server’s own poll reads at it. Deriving it here rather than at each end is what stops the two from disagreeing.

Source

pub fn is_loopback(&self) -> bool

Whether this DID names a loopback host, and so is development-only.

Source

pub fn did_json_url(&self) -> String

The URL the DID document is served at. Always https://: every server this project runs terminates TLS, on a developer’s machine as much as anywhere else.

A DID carries no port, so this is port 443 — except for a loopback host RESOLVE_PORTS names, which is how a harness reaches several servers at once on one machine.

Source

pub fn as_str(&self) -> &str

The DID as written, with the port colon still encoded.

Trait Implementations§

Source§

impl Clone for AccountDid

Source§

fn clone(&self) -> AccountDid

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AccountDid

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for AccountDid

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FromStr for AccountDid

Source§

type Err = DidError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for AccountDid

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for AccountDid

Source§

fn eq(&self, other: &AccountDid) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for AccountDid

Source§

impl StructuralPartialEq for AccountDid

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.