Module: Atmosfire::RequestUtils
- Extended by:
- T::Sig
- Includes:
- Kernel
- Included in:
- AtUriParser, Record, Repo, Atmosfire::Repo::Collection, Session
- Defined in:
- lib/atmosfire/requests.rb,
lib/atmosfire/at_uri.rb
Overview
Goal is to replace with pure XRPC eventually
Instance Method Summary collapse
- #at_uri(url, atp_host = "https://bsky.social") ⇒ Object
- #create_session_uri(pds) ⇒ Object
- #default_authenticated_headers(session) ⇒ Object
- #default_headers ⇒ Object
- #delete_record_uri(pds) ⇒ Object
- #delete_session_uri(pds) ⇒ Object
- #get_paginated_data(session, method, key:, params:, cursor: nil, &map_block) ⇒ Object
- #get_post_thread_uri(pds, query) ⇒ Object
- #get_session_uri(pds) ⇒ Object
- #mute_actor_uri(pds) ⇒ Object
- #query_obj_to_query_params(q) ⇒ Object
- #refresh_session_uri(pds) ⇒ Object
- #refresh_token_headers(session) ⇒ Object
- #resolve_handle(username, pds = "https://bsky.social") ⇒ Object
- #upload_blob_uri(pds) ⇒ Object
Instance Method Details
#at_uri(url, atp_host = "https://bsky.social") ⇒ Object
10 11 12 |
# File 'lib/atmosfire/at_uri.rb', line 10 def at_uri(url, atp_host = "https://bsky.social") AtUriParser.parse(url, AtUriParser::RuleSets, pds: atp_host) end |
#create_session_uri(pds) ⇒ Object
28 29 30 |
# File 'lib/atmosfire/requests.rb', line 28 def create_session_uri(pds) "#{pds}/xrpc/com.atproto.server.createSession" end |
#default_authenticated_headers(session) ⇒ Object
60 61 62 63 64 |
# File 'lib/atmosfire/requests.rb', line 60 def default_authenticated_headers(session) default_headers.merge({ Authorization: "Bearer #{session.access_token}", }) end |
#default_headers ⇒ Object
24 25 26 |
# File 'lib/atmosfire/requests.rb', line 24 def default_headers { "Content-Type" => "application/json" } end |
#delete_record_uri(pds) ⇒ Object
44 45 46 |
# File 'lib/atmosfire/requests.rb', line 44 def delete_record_uri(pds) "#{pds}/xrpc/com.atproto.repo.deleteRecord" end |
#delete_session_uri(pds) ⇒ Object
32 33 34 |
# File 'lib/atmosfire/requests.rb', line 32 def delete_session_uri(pds) "#{pds}/xrpc/com.atproto.server.deleteSession" end |
#get_paginated_data(session, method, key:, params:, cursor: nil, &map_block) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/atmosfire/requests.rb', line 89 def get_paginated_data(session, method, key:, params:, cursor: nil, &map_block) (send_data = (params.merge({ :limit => 100, :cursor => cursor }))) response = session.xrpc.get.public_send(method, **send_data) data = response.dig(key) if data.nil? || data.empty? return [] end results = block_given? ? data.map(&map_block) : data next_cursor = T.let(response.dig("cursor"), T.nilable(String)) if next_cursor.nil? return results else return results + get_paginated_data(session, method, key: key, params: params, cursor: next_cursor, &map_block) end end |
#get_post_thread_uri(pds, query) ⇒ Object
56 57 58 |
# File 'lib/atmosfire/requests.rb', line 56 def get_post_thread_uri(pds, query) "#{pds}/xrpc/app.bsky.feed.getPostThread#{query_obj_to_query_params(query)}" end |
#get_session_uri(pds) ⇒ Object
40 41 42 |
# File 'lib/atmosfire/requests.rb', line 40 def get_session_uri(pds) "#{pds}/xrpc/com.atproto.server.getSession" end |
#mute_actor_uri(pds) ⇒ Object
48 49 50 |
# File 'lib/atmosfire/requests.rb', line 48 def mute_actor_uri(pds) "#{pds}/xrpc/app.bsky.graph.muteActor" end |
#query_obj_to_query_params(q) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/atmosfire/requests.rb', line 16 def query_obj_to_query_params(q) out = "?" q.to_h.each do |key, value| out += "#{key}=#{value}&" unless value.nil? || (value.class.method_defined?(:empty?) && value.empty?) end out.slice(0...-1) end |
#refresh_session_uri(pds) ⇒ Object
36 37 38 |
# File 'lib/atmosfire/requests.rb', line 36 def refresh_session_uri(pds) "#{pds}/xrpc/com.atproto.server.refreshSession" end |
#refresh_token_headers(session) ⇒ Object
66 67 68 69 70 |
# File 'lib/atmosfire/requests.rb', line 66 def refresh_token_headers(session) default_headers.merge({ Authorization: "Bearer #{session.refresh_token}", }) end |
#resolve_handle(username, pds = "https://bsky.social") ⇒ Object
12 13 14 |
# File 'lib/atmosfire/requests.rb', line 12 def resolve_handle(username, pds = "https://bsky.social") (XRPC::Client.new(pds).get.com_atproto_identity_resolveHandle(handle: username))["did"] end |
#upload_blob_uri(pds) ⇒ Object
52 53 54 |
# File 'lib/atmosfire/requests.rb', line 52 def upload_blob_uri(pds) "#{pds}/xrpc/com.atproto.repo.uploadBlob" end |