A library for handling DID identifiers used in Bluesky AT Protocol

refactored alsoKnownAs parsing

+20 -18
+14
lib/didkit/at_handles.rb
··· 1 + module DIDKit 2 + module AtHandles 3 + class FormatError < StandardError 4 + end 5 + 6 + def parse_also_known_as(aka) 7 + raise FormatError, "Invalid alsoKnownAs: #{aka.inspect}" unless aka.is_a?(Array) 8 + raise FormatError, "Invalid alsoKnownAs: #{aka.inspect}" unless aka.all? { |x| x.is_a?(String) } 9 + raise FormatError, "Invalid alsoKnownAs: #{aka.inspect}" unless aka.all? { |x| x =~ %r(\Aat://[^/]+\z) } 10 + 11 + aka.map { |x| x.gsub('at://', '') } 12 + end 13 + end 14 + end
+3 -9
lib/didkit/document.rb
··· 1 + require_relative 'at_handles' 1 2 require_relative 'resolver' 2 3 require_relative 'service_record' 3 4 require_relative 'services' ··· 7 8 class FormatError < StandardError 8 9 end 9 10 11 + include AtHandles 10 12 include Services 11 13 12 14 attr_reader :json, :did, :handles, :services ··· 36 38 ServiceRecord.new(id.gsub(/^#/, ''), type, endpoint) 37 39 } 38 40 39 - if aka = json['alsoKnownAs'] 40 - raise FormatError, "Invalid alsoKnownAs" unless aka.is_a?(Array) 41 - raise FormatError, "Invalid alsoKnownAs" unless aka.all? { |x| x.is_a?(String) } 42 - raise FormatError, "Invalid alsoKnownAs" unless aka.all? { |x| x =~ %r(\Aat://[^/]+\z) } 43 - 44 - @handles = aka.map { |x| x.gsub('at://', '') } 45 - else 46 - @handles = [] 47 - end 41 + @handles = parse_also_known_as(json['alsoKnownAs'] || []) 48 42 end 49 43 50 44 def get_validated_handle
+3 -9
lib/didkit/plc_operation.rb
··· 1 1 require 'time' 2 2 3 + require_relative 'at_handles' 3 4 require_relative 'service_record' 4 5 require_relative 'services' 5 6 ··· 8 9 class FormatError < StandardError 9 10 end 10 11 12 + include AtHandles 11 13 include Services 12 14 13 15 attr_reader :json, :did, :created_at, :type, :handles, :services ··· 49 51 ServiceRecord.new(k, type, endpoint) 50 52 } 51 53 52 - if aka = operation['alsoKnownAs'] 53 - raise FormatError, "Invalid alsoKnownAs: #{aka.inspect}" unless aka.is_a?(Array) 54 - raise FormatError, "Invalid alsoKnownAs: #{aka.inspect}" unless aka.all? { |x| x.is_a?(String) } 55 - raise FormatError, "Invalid alsoKnownAs: #{aka.inspect}" unless aka.all? { |x| x =~ %r(\Aat://[^/]+\z) } 56 - 57 - @handles = aka.map { |x| x.gsub('at://', '') } 58 - else 59 - @handles = [] 60 - end 54 + @handles = parse_also_known_as(operation['alsoKnownAs'] || []) 61 55 end 62 56 end 63 57 end