yonder 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/yonder/version.rb +3 -0
  3. data/lib/yonder.rb +69 -0
  4. metadata +57 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7d2f1e9e39e76d3943e13103c9fc57bab664b1eafdd5ff88f94c1b41c0ce1cbb
4
+ data.tar.gz: 0c456c5e04016b65018ac80c4d88727576a170c59fd8e9a7510f10ea0c8366da
5
+ SHA512:
6
+ metadata.gz: 8921c8b1951f18dcb21578adcf87259525efe9e02b64c9fe8d9f9208bea9d59105372d4ea0ef18434ee82fd4114f7b14f1ed661da33129ddf1f512c405ebcaa7
7
+ data.tar.gz: 878ee56b10802b4bc3b23b76313b06c0b1916b96809ab03162abf9624f376e486139db3b2c9920fe238a5d01f5b1fe2a5c07da43d3d0cc65c32ea6e3c1c98858
@@ -0,0 +1,3 @@
1
+ module Yonder
2
+ VERSION = 0.1
3
+ end
data/lib/yonder.rb ADDED
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.unshift(__dir__)
4
+
5
+ require 'httpx'
6
+ require 'yonder/version'
7
+
8
+ module Yonder
9
+ class << self
10
+ BASE_URL = "https://bsky.social"
11
+
12
+ attr_accessor :access_token
13
+ attr_accessor :refresh_token
14
+
15
+ def create_record(user_did:, record:, collection: 'app.bsky.feed.post')
16
+ post("/com.atproto.repo.createRecord", params: {
17
+ repo: user_did,
18
+ collection: collection,
19
+ record: record
20
+ })
21
+ end
22
+
23
+ def create_session(username:, password:)
24
+ post("/com.atproto.server.createSession", params: {
25
+ identifier: username,
26
+ password: password
27
+ })
28
+ end
29
+
30
+ def renew_session(renewal_token)
31
+ post("/com.atproto.server.refreshSession")
32
+ end
33
+
34
+ def get(endpoint)
35
+ make_api_request(endpoint, method: :get)
36
+ end
37
+
38
+ def post(endpoint, params: {})
39
+ make_api_request(endpoint, method: :post, params: params)
40
+ end
41
+
42
+ private
43
+
44
+ def make_api_request(endpoint, method: :get, params: {})
45
+ response = http_client.request(method, endpoint, json: params)
46
+
47
+ response.raise_for_status
48
+ response.json
49
+ end
50
+
51
+ def http_client
52
+ client = HTTPX.with(
53
+ origin: BASE_URL,
54
+ headers: api_headers,
55
+ base_path: '/xrpc'
56
+ ).plugin(:auth)
57
+
58
+ return client if @access_token.nil?
59
+
60
+ client.bearer_auth(@access_token)
61
+ end
62
+
63
+ def api_headers
64
+ {
65
+ "user-agent": @user_agent || "yonder v#{Yonder::VERSION}"
66
+ }
67
+ end
68
+ end
69
+ end
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yonder
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Bogan
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: httpx
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.5'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.5'
26
+ description: A gem for interacting with Bluesky's API.
27
+ email:
28
+ - d+yonder@waferbaby.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/yonder.rb
34
+ - lib/yonder/version.rb
35
+ homepage: http://github.com/waferbaby/yonder
36
+ licenses:
37
+ - MIT
38
+ metadata:
39
+ rubygems_mfa_required: 'true'
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.3'
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubygems_version: 3.6.7
55
+ specification_version: 4
56
+ summary: A Bluesky API gem
57
+ test_files: []