event_builders
event_builders
¶
Nostr event builders for all NIP-compliant event kinds.
Standalone functions for constructing Nostr events from typed NIP data models. Used by the Monitor service for publishing profile (Kind 0), monitor announcement (Kind 10166), and relay discovery (Kind 30166) events.
See Also
bigbrotr.nips.nip66.data: Typed data models consumed by the Kind 30166 tag builder functions. bigbrotr.nips.nip11.data.Nip11InfoData: NIP-11 data model used for language, requirement, and type tags. bigbrotr.nips.nip66.logs.Nip66RttMultiPhaseLogs: RTT probe logs used for requirement tag derivation.
Classes¶
AccessFlags
¶
Bases: NamedTuple
Relay access restriction flags derived from NIP-11 and RTT probe results.
Functions¶
build_profile_event
¶
build_profile_event(
*,
name: str | None = None,
about: str | None = None,
picture: str | None = None,
nip05: str | None = None,
website: str | None = None,
banner: str | None = None,
lud16: str | None = None,
) -> EventBuilder
Build a Kind 0 profile metadata event per NIP-01.
Source code in src/bigbrotr/nips/event_builders.py
build_relay_list_event
¶
build_relay_list_event(relays: list[Relay]) -> EventBuilder
Build a Kind 10002 relay list metadata event per NIP-65.
Source code in src/bigbrotr/nips/event_builders.py
build_monitor_announcement
¶
build_monitor_announcement(
*,
interval: int,
timeout_ms: int,
enabled_networks: list[NetworkType],
nip11_selection: Nip11Selection,
nip66_selection: Nip66Selection,
geohash: str | None = None,
) -> EventBuilder
Build a Kind 10166 monitor announcement event per NIP-66.
Source code in src/bigbrotr/nips/event_builders.py
add_rtt_tags
¶
add_rtt_tags(
tags: list[Tag], rtt_data: Nip66RttData | None
) -> None
Add round-trip time tags: rtt-open, rtt-read, rtt-write.
Source code in src/bigbrotr/nips/event_builders.py
add_ssl_tags
¶
add_ssl_tags(
tags: list[Tag], ssl_data: Nip66SslData | None
) -> None
Add SSL certificate tags: ssl, ssl-expires, ssl-issuer.
Source code in src/bigbrotr/nips/event_builders.py
add_net_tags
¶
add_net_tags(
tags: list[Tag], net_data: Nip66NetData | None
) -> None
Add network tags: net-ip, net-ipv6, net-asn, net-asn-org.
Also emits NIP-32 l labels for ASN and ASN org, making them
relay-filterable via #l subscription filters.
Source code in src/bigbrotr/nips/event_builders.py
add_geo_tags
¶
add_geo_tags(
tags: list[Tag], geo_data: Nip66GeoData | None
) -> None
Add geolocation tags (g, geo-country, geo-city, etc.).
Indexed (filterable) values are emitted as both informational multi-letter
tags and NIP-32 l labels so clients can filter on them:
- country →
["l", "<ISO-3166-1>", "ISO-3166-1"] - city →
["l", "<city>", "nip66.label.city"](no recognized standard) - timezone →
["l", "<tz>", "IANA-tz"]
Source code in src/bigbrotr/nips/event_builders.py
add_dns_tags
¶
add_dns_tags(
tags: list[Tag], dns_data: Nip66DnsData | None
) -> None
Add DNS resolution tags: dns-ip, dns-ip6, dns-cname, dns-ttl.
Source code in src/bigbrotr/nips/event_builders.py
add_http_tags
¶
add_http_tags(
tags: list[Tag], http_data: Nip66HttpData | None
) -> None
Add HTTP server header tags: http-server, http-powered-by.
Source code in src/bigbrotr/nips/event_builders.py
add_attributes_tags
¶
add_attributes_tags(
tags: list[Tag], nip11_data: Nip11InfoData
) -> None
Add relay attribute tags (W) from NIP-11 attributes field.
Source code in src/bigbrotr/nips/event_builders.py
add_language_tags
¶
add_language_tags(
tags: list[Tag], nip11_data: Nip11InfoData
) -> None
Add ISO 639-1 language tags derived from NIP-11 language_tags field.
Source code in src/bigbrotr/nips/event_builders.py
add_requirement_and_type_tags
¶
add_requirement_and_type_tags(
tags: list[Tag],
nip11_data: Nip11InfoData,
rtt_logs: Nip66RttMultiPhaseLogs | None,
) -> None
Add R (requirement) and T (type) tags from NIP-11 data and RTT probe logs.
Source code in src/bigbrotr/nips/event_builders.py
add_type_tags
¶
add_type_tags(
tags: list[Tag],
supported_nips: list[int] | None,
access: AccessFlags,
) -> None
Add T (type) tags classifying the relay based on NIPs and access restrictions.
Source code in src/bigbrotr/nips/event_builders.py
add_nip11_tags
¶
add_nip11_tags(
tags: list[Tag],
nip11_data: Nip11InfoData | None,
rtt_logs: Nip66RttMultiPhaseLogs | None = None,
) -> None
Add NIP-11-derived tags: N, t, l, R, T, W.
Source code in src/bigbrotr/nips/event_builders.py
build_relay_discovery
¶
build_relay_discovery(
relay: Relay,
nip11: Nip11 | None = None,
nip66: Nip66 | None = None,
) -> EventBuilder
Build a Kind 30166 relay discovery event per NIP-66.
Parameters:
-
relay(Relay) –The relay being monitored.
-
nip11(Nip11 | None, default:None) –NIP-11 relay information (
Noneif not fetched). -
nip66(Nip66 | None, default:None) –NIP-66 health check results (
Noneif not run).
Returns:
-
EventBuilder–A signed-ready
EventBuilderfor Kind 30166.