tangled
alpha
login
or
join now
mackuba.eu
/
didkit
1
fork
atom
A library for handling DID identifiers used in Bluesky AT Protocol
1
fork
atom
overview
issues
pulls
pipelines
allow passing a DID to resolve_handle for convenience
mackuba.eu
2 months ago
557aa134
a4ec9a7c
+10
-4
3 changed files
expand all
collapse all
unified
split
bin
resolve
lib
didkit
did.rb
resolver.rb
+1
-1
bin/resolve
···
12
begin
13
query = ARGV[0].to_s
14
15
-
if query =~ /^did\:/
16
did = DID.new(query)
17
elsif query =~ /^@[\w\-]+(\.[\w\-]+)+$/
18
did = resolver.resolve_handle(query)
···
12
begin
13
query = ARGV[0].to_s
14
15
+
if query =~ DID::GENERIC_REGEXP
16
did = DID.new(query)
17
elsif query =~ /^@[\w\-]+(\.[\w\-]+)+$/
18
did = resolver.resolve_handle(query)
+4
-2
lib/didkit/did.rb
···
7
8
module DIDKit
9
class DID
0
0
10
include Requests
11
12
def self.resolve_handle(handle)
···
16
attr_reader :type, :did, :resolved_by
17
18
def initialize(did, resolved_by = nil)
19
-
if did =~ /^did\:(\w+)\:/
20
@did = did
21
-
@type = $1.to_sym
22
else
23
raise DIDError.new("Invalid DID format")
24
end
···
7
8
module DIDKit
9
class DID
10
+
GENERIC_REGEXP = /\Adid\:\w+\:.+\z/
11
+
12
include Requests
13
14
def self.resolve_handle(handle)
···
18
attr_reader :type, :did, :resolved_by
19
20
def initialize(did, resolved_by = nil)
21
+
if did =~ GENERIC_REGEXP
22
@did = did
23
+
@type = did.split(':')[1].to_sym
24
else
25
raise DIDError.new("Invalid DID format")
26
end
+5
-1
lib/didkit/resolver.rb
···
19
end
20
21
def resolve_handle(handle)
0
0
0
0
22
domain = handle.gsub(/^@/, '')
23
24
return nil if RESERVED_DOMAINS.include?(domain.split('.').last)
···
71
72
def parse_did_from_well_known(text)
73
text = text.strip
74
-
text.lines.length == 1 && text =~ /\Adid\:\w+\:.*\z/ ? text : nil
75
end
76
77
def resolve_did(did)
···
19
end
20
21
def resolve_handle(handle)
22
+
if handle =~ DID::GENERIC_REGEXP
23
+
return DID.new(handle)
24
+
end
25
+
26
domain = handle.gsub(/^@/, '')
27
28
return nil if RESERVED_DOMAINS.include?(domain.split('.').last)
···
75
76
def parse_did_from_well_known(text)
77
text = text.strip
78
+
text.lines.length == 1 && text =~ DID::GENERIC_REGEXP ? text : nil
79
end
80
81
def resolve_did(did)