From 557aa134703e07ac72abfa083f8adb0b4a2040ac Mon Sep 17 00:00:00 2001 From: Kuba Suder Date: Wed, 17 Dec 2025 01:10:21 +0200 Subject: [PATCH] allow passing a DID to resolve_handle for convenience --- bin/resolve | 2 +- lib/didkit/did.rb | 6 ++++-- lib/didkit/resolver.rb | 6 +++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/bin/resolve b/bin/resolve index 43fda12..d557412 100755 --- a/bin/resolve +++ b/bin/resolve @@ -12,7 +12,7 @@ resolver = DIDKit::Resolver.new(nameserver: '8.8.8.8') begin query = ARGV[0].to_s - if query =~ /^did\:/ + if query =~ DID::GENERIC_REGEXP did = DID.new(query) elsif query =~ /^@[\w\-]+(\.[\w\-]+)+$/ did = resolver.resolve_handle(query) diff --git a/lib/didkit/did.rb b/lib/didkit/did.rb index 20fa032..1ba872b 100644 --- a/lib/didkit/did.rb +++ b/lib/didkit/did.rb @@ -7,6 +7,8 @@ require_relative 'resolver' module DIDKit class DID + GENERIC_REGEXP = /\Adid\:\w+\:.+\z/ + include Requests def self.resolve_handle(handle) @@ -16,9 +18,9 @@ module DIDKit attr_reader :type, :did, :resolved_by def initialize(did, resolved_by = nil) - if did =~ /^did\:(\w+)\:/ + if did =~ GENERIC_REGEXP @did = did - @type = $1.to_sym + @type = did.split(':')[1].to_sym else raise DIDError.new("Invalid DID format") end diff --git a/lib/didkit/resolver.rb b/lib/didkit/resolver.rb index 280907e..8492f17 100644 --- a/lib/didkit/resolver.rb +++ b/lib/didkit/resolver.rb @@ -19,6 +19,10 @@ module DIDKit end def resolve_handle(handle) + if handle =~ DID::GENERIC_REGEXP + return DID.new(handle) + end + domain = handle.gsub(/^@/, '') return nil if RESERVED_DOMAINS.include?(domain.split('.').last) @@ -71,7 +75,7 @@ module DIDKit def parse_did_from_well_known(text) text = text.strip - text.lines.length == 1 && text =~ /\Adid\:\w+\:.*\z/ ? text : nil + text.lines.length == 1 && text =~ DID::GENERIC_REGEXP ? text : nil end def resolve_did(did) -- knotmirror 0.0.1