Class: RubySky::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/rubysky/client.rb

Overview

API Client

Constant Summary collapse

PDSHOST_BSKY_SOCIAL =
"https://bsky.social"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client:) ⇒ Client

Returns a new instance of Client.



23
24
25
# File 'lib/rubysky/client.rb', line 23

def initialize(client:)
  @client = client
end

Class Method Details

.from_app_password(identifier:, password:, pds: PDSHOST_BSKY_SOCIAL) ⇒ Object



18
19
20
21
# File 'lib/rubysky/client.rb', line 18

def self.from_app_password(identifier:, password:, pds: PDSHOST_BSKY_SOCIAL)
  client = Raw::Client.create_session(identifier:, password:, pds:)
  new(client:)
end

.from_refresh_jwt(refresh_jwt:, pds: PDSHOST_BSKY_SOCIAL) ⇒ Object



13
14
15
16
# File 'lib/rubysky/client.rb', line 13

def self.from_refresh_jwt(refresh_jwt:, pds: PDSHOST_BSKY_SOCIAL)
  client = Raw::Client.from_refresh_jwt(refresh_jwt:, pds:)
  new(client:)
end

Instance Method Details

#handleObject



59
60
61
# File 'lib/rubysky/client.rb', line 59

def handle
  @client.session.handle
end

#post(text:, images: []) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/rubysky/client.rb', line 27

def post(text:, images: [])
  unless images.empty?
    embed = Raw::ImageEmbed.new(images: images.map do |image|
      @client.upload_image(file: image[:data], mime_type: image[:mime_type], alt: image[:alt] || "")
    end)
  end
  Post.new(raw: @client.post(text: text, embed:), repo: @client.session.handle)
end

#refresh_jwtObject



36
37
38
# File 'lib/rubysky/client.rb', line 36

def refresh_jwt
  @client.session.refresh_jwt
end

#user_didObject



40
41
42
# File 'lib/rubysky/client.rb', line 40

def user_did
  @client.session.did_doc.did_doc
end

#user_infoObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/rubysky/client.rb', line 44

def 
  {
    "pds" => @client.pds,
    "access_jwt" => @client.session.access_jwt,
    "refresh_jwt" => @client.session.refresh_jwt,
    "did" => @client.session.did_doc.did,
    "did_doc" => @client.session.did_doc.did_doc,
    "email" => @client.session.email,
    "email_confirmed" => @client.session.email_confirmed,
    "email_auth_factor" => @client.session.email_auth_factor,
    "active" => @client.session.active,
    "status" => @client.session.status
  }.compact
end