Toot toooooooot (Bluesky-Mastodon cross-poster)
at master 1.2 kB view raw
1require 'didkit' 2require_relative 'bluesky_client' 3 4class BlueskyAccount 5 def initialize 6 @sky = BlueskyClient.new 7 end 8 9 def did 10 @sky.user.did 11 end 12 13 def login_with_password(handle, password) 14 did = DID.resolve_handle(handle) 15 if did.nil? 16 puts "Error: couldn't resolve handle #{handle.inspect}" 17 exit 1 18 end 19 20 @sky.host = did.document.pds_host 21 @sky.user.id = handle 22 @sky.user.pass = password 23 24 @sky.log_in 25 end 26 27 def log_in 28 @sky.log_in 29 end 30 31 def fetch_likes 32 json = @sky.get_request('com.atproto.repo.listRecords', { 33 repo: @sky.user.did, 34 collection: 'app.bsky.feed.like', 35 limit: 100 36 }) 37 38 json['records'] 39 end 40 41 def fetch_record(repo, collection, rkey) 42 @sky.get_request('com.atproto.repo.getRecord', { repo: repo, collection: collection, rkey: rkey }) 43 end 44 45 def fetch_blob(cid) 46 @sky.get_request('com.atproto.sync.getBlob', { did: @sky.user.did, cid: cid }) 47 end 48 49 def delete_record_at(uri) 50 repo, collection, rkey = uri.split('/')[2..4] 51 @sky.post_request('com.atproto.repo.deleteRecord', { repo: repo, collection: collection, rkey: rkey }) 52 end 53end