RFC 7033 WebFinger and JRD parser, serializer, request builder, query and audit toolkit for MoonBit.
let target = @wf.build_request_target_with_rels(
"acct:alice@example.com",
["http://webfinger.net/rel/profile-page"],
)webfinger-tool request --resource acct:alice@example.com
webfinger-tool parse --input-file smoke_jrd.json
webfinger-tool query --rel http://openid.net/specs/connect/1.0/issuer --input-file smoke_jrd.json
webfinger-tool audit --input-file smoke_jrd.jsonpub suberror WebFingerError {
WebFingerError(WebFingerErrorStage, WebFingerErrorKind, Int?, String)
}pub struct AcctUri {
localpart : String
host : String
}pub enum AuditSeverity {
Warning
Info
}impl Show for AuditSeveritypub struct CliOptions {
resource : String?
rels : Array[String]
origin : String?
input : String?
input_file : String?
media_type : String?
}pub struct JrdLink {
rel : String
media_type : String?
href : String?
titles : Map[String, String]
properties : Map[String, PropertyValue]
extensions : Map[String, Json]
}pub struct JrdLinkBuilder {
rel : String
media_type : String?
href : String?
titles : Map[String, String]
properties : Map[String, PropertyValue]
extensions : Map[String, Json]
}fn JrdLinkBuilder::property(self : JrdLinkBuilder, uri : String, value : PropertyValue) -> JrdLinkBuilderfn JrdLinkBuilder::property_string(self : JrdLinkBuilder, uri : String, s : String) -> JrdLinkBuilderpub struct Limits {
max_input_bytes : Int
max_subject_bytes : Int
max_aliases : Int
max_alias_bytes : Int
max_properties : Int
max_property_name_bytes : Int
max_property_value_bytes : Int
max_links : Int
max_titles_per_link : Int
max_properties_per_link : Int
max_string_bytes : Int
max_extension_members : Int
max_nesting_depth : Int
}pub struct RelationCount {
rel : String
count : Int
}pub enum ValidationSeverity {
Error
Warning
Info
}impl Show for ValidationSeveritypub enum WebFingerErrorKind {
InvalidJson
RootNotObject
MissingResource
InvalidResource
InvalidUri
InvalidPercentEncoding
WrongMemberType
MissingRequiredMember
InvalidLink
InvalidProperty
InvalidContentType
LimitExceeded
DuplicateReservedExtension
InvalidRelValue
InvalidLanguageTag
InvalidAcctUri
InvalidOrigin
NonHttpsOrigin
InvalidHttpStatus
NonHttpsFinalUrl
EmptyInput
}impl Show for WebFingerErrorKindpub enum WebFingerErrorStage {
Input
Json
Request
Uri
Jrd
Subject
Alias
Property
Link
Context
Limit
Builder
}impl Show for WebFingerErrorStagefn WebFingerRequestContext::new(request_url : String, resource : String, rels : Array[String]) -> WebFingerRequestContextpub struct WebFingerResponseContext {
request_url : String?
final_url : String
status : Int
content_type : String?
body_bytes : Int?
}fn WebFingerResponseContext::new(request_url : String?, final_url : String, status : Int, content_type : String?, body_bytes : Int?) -> WebFingerResponseContextfn build_request_target_with_rels(resource : String, rels : Array[String]) -> Result[String, WebFingerError]fn build_webfinger_url(origin : String, resource : String, rels : Array[String]) -> Result[String, WebFingerError]fn check_language_tag(tag : String) -> Boolfn find_links_by_rel_and_type(jrd : JsonResourceDescriptor, rel : String, media_type : String) -> Array[JrdLink]fn is_acct_uri(s : String) -> Boolfn is_jrd_content_type(content_type : String) -> Boolfn library_version() -> Stringfn origin_of(url : String) -> String?fn parse_jrd_with_limits(input : String, limits : Limits) -> Result[JsonResourceDescriptor, WebFingerError]fn percent_encode_acct_localpart(input : String) -> Stringfn percent_encode_component(input : String) -> Stringfn scheme_is(s : String, scheme : String) -> Boolfn uri_scheme(s : String) -> String?fn utf8_byte_length(s : String) -> Intfn validate_for_resource(jrd : JsonResourceDescriptor, requested_resource : String) -> Array[ValidationIssue]fn within_byte_limit(s : String, limit : Int) -> BoolRFC 7033 WebFinger and JRD parser, serializer, request builder, query and audit toolkit for MoonBit.