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'
8require 'json'
9
10resolver = DIDKit::Resolver.new(nameserver: '8.8.8.8')
11
12begin
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)
19 else
20 puts "Usage: #{$PROGRAM_NAME} <@handle> | <did:...>"
21 exit 1
22 end
23
24 if did.nil?
25 puts "Couldn't resolve handle #{query}"
26 return
27 end
28
29 doc = did.get_document
30 verified_handle = resolver.get_verified_handle(doc)
31
32 puts
33 puts "PDS: #{doc.pds_endpoint}"
34 puts "Resolved by: #{did.resolved_by}" if did.resolved_by
35 puts "Verified handle: " + (verified_handle ? "@#{verified_handle}" : "⚠️ invalid handle #{doc.handles.inspect}")
36 puts
37 puts JSON.pretty_generate(doc.json)
38rescue StandardError => e
39 puts "Error: #{e}"
40end