+1
Gemfile
+1
Gemfile
+2
Gemfile.lock
+2
Gemfile.lock
···
40
40
debug (1.10.0)
41
41
irb (~> 1.10)
42
42
reline (>= 0.3.8)
43
+
didkit (0.2.3)
43
44
drb (2.2.1)
44
45
eventmachine (1.2.7)
45
46
faye-websocket (0.11.3)
···
123
124
blue_factory (~> 0.1.5)
124
125
capistrano (~> 2.0)
125
126
debug
127
+
didkit (~> 0.2)
126
128
irb
127
129
ostruct
128
130
rainbow
+3
app/firehose_stream.rb
+3
app/firehose_stream.rb
···
6
6
require_relative 'models/feed_post'
7
7
require_relative 'models/post'
8
8
require_relative 'models/subscription'
9
+
require_relative 'utils'
9
10
10
11
class FirehoseStream
11
12
attr_accessor :start_cursor, :show_progress, :log_status, :log_posts, :save_posts, :replay_events
12
13
13
14
DEFAULT_JETSTREAM = 'jetstream2.us-east.bsky.network'
14
15
POSTS_BATCH_SIZE = 100
16
+
17
+
include Utils
15
18
16
19
def initialize(service = nil)
17
20
@env = (ENV['APP_ENV'] || ENV['RACK_ENV'] || :development).to_sym
+3
-8
app/utils.rb
+3
-8
app/utils.rb
···
1
-
require 'json'
2
-
require 'open-uri'
1
+
require 'didkit'
3
2
4
3
module Utils
5
4
def handle_from_did(did)
6
-
url = "https://plc.directory/#{did}"
7
-
json = JSON.parse(URI.open(url).read)
8
-
json['alsoKnownAs'][0].gsub('at://', '')
5
+
DID.new(did).get_validated_handle
9
6
end
10
7
11
8
def did_from_handle(handle)
12
-
url = "https://bsky.social/xrpc/com.atproto.identity.resolveHandle?handle=#{handle}"
13
-
json = JSON.parse(URI.open(url).read)
14
-
json['did']
9
+
DID.resolve_handle(handle).did
15
10
end
16
11
17
12
extend self