A library for handling DID identifiers used in Bluesky AT Protocol
1#!/usr/bin/env ruby
2# frozen_string_literal: true
3
4$LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
5
6require "bundler/setup"
7require "didkit"
8
9resolver = DIDKit::Resolver.new(nameserver: '8.8.8.8')
10
11begin
12 query = ARGV[0].to_s
13
14 if query =~ /^did\:/
15 did = DID.new(query)
16 elsif query =~ /^@[\w\-]+(\.[\w\-]+)+$/
17 did = resolver.resolve_handle(query)
18 else
19 puts "Usage: #{$PROGRAM_NAME} <@handle> | <did:...>"
20 exit 1
21 end
22
23 if did.nil?
24 puts "Couldn't resolve handle #{query}"
25 return
26 end
27
28 doc = did.get_document
29 valid_handle = resolver.get_validated_handle(doc)
30
31 puts
32 puts "PDS: #{doc.pds_endpoint}"
33 puts "Resolved by: #{did.resolved_by}" if did.resolved_by
34 puts "Validated handle: " + (valid_handle ? "@#{valid_handle}" : "⚠️ invalid handle #{doc.handles.inspect}")
35 puts
36 puts JSON.pretty_generate(doc.json)
37rescue StandardError => e
38 puts "Error: #{e}"
39end