A library for handling DID identifiers used in Bluesky AT Protocol
at master 40 lines 948 B view raw
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