diff --git a/src/at/nsid.gleam b/src/at/nsid.gleam index 8796076..dc4e4f9 100644 --- a/src/at/nsid.gleam +++ b/src/at/nsid.gleam @@ -340,6 +340,17 @@ pub fn name(nsid: Nsid) -> String { nsid.name } +/// Construct a domain name from an [`Nsid`](#Nsid) authority. This reverses the +/// authority segments back into the order they would appear in a typical domain +/// name, such as `"bsky.app"` or `"atproto.com"`. +/// +pub fn domain(nsid: Nsid) -> String { + let assert [tld, ..rest] = nsid.authority + use out, segment <- list.fold(rest, tld) + + segment <> "." <> out +} + // CONVERSIONS ----------------------------------------------------------------- /// Convert an [`Nsid`](#Nsid) back into its string representation.