yonder 0.2 → 0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cab3d792b4319fb93f505b1d689b3b873487f484e9ee1c1de2ca902644b45349
4
- data.tar.gz: acd3ffb29382b246035e6410eafb5d344a467b0ce02e2ce7972842a38527b9e5
3
+ metadata.gz: 2702e3ab4ae8d1d1d254df861aba3dd705adfcd77c0900fc6200d024c6775676
4
+ data.tar.gz: e26e68823fe42d8d6813b9008067c7b69fa710cd7d045e2ca61ff9b225dd6e19
5
5
  SHA512:
6
- metadata.gz: db13171aee0b173178588517ce6edd291c18f01c510627cc856611eb01287ff7658fbd8c76bbf50673520903e2549ff63c241c270708ea29dafa84647752668a
7
- data.tar.gz: 607c672ad910130a580e5f92a5f62fe7469d5bc3db4d19305ed42ed6ffa7894662d353343ba96f65e0e80f4e9a8728dc7979d897a861b222b46cc7976b4e2927
6
+ metadata.gz: b0e662fb8778962ab28be960cb87c2987d825225c64f0f5c1744db7f3b30d190d89e32cdcf39c40bfd804e933b92bfb79f38922171e412ae6c5f096a50bb22e0
7
+ data.tar.gz: 2a9a49a413a02c4e191fb04e5daa02c4bebac6b8fd3e77d9c56d4e5534243fe7761c27f43fb80ccbe76b49fc0f728e5b531596a5d4c1c5561e5c0be211caca89
@@ -0,0 +1,21 @@
1
+ module Yonder
2
+ class Session
3
+ attr_accessor :user_did
4
+ attr_accessor :access_token
5
+ attr_accessor :refresh_token
6
+
7
+ def self.from_json(payload)
8
+ Session.new(
9
+ user_did: payload["did"],
10
+ access_token: payload["accessJwt"],
11
+ refresh_token: payload["refreshJwt"]
12
+ )
13
+ end
14
+
15
+ def initialize(user_did:, access_token:, refresh_token:)
16
+ @user_did = user_did
17
+ @access_token = access_token
18
+ @refresh_token = refresh_token
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module Yonder
2
- VERSION = 0.2
2
+ VERSION = 0.3
3
3
  end
data/lib/yonder.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  $LOAD_PATH.unshift(__dir__)
4
4
 
5
5
  require 'httpx'
6
+ require 'yonder/session'
6
7
  require 'yonder/version'
7
8
  require 'yonder/errors'
8
9
 
@@ -17,8 +18,8 @@ module Yonder
17
18
  }
18
19
 
19
20
  attr_accessor :api_host
20
- attr_accessor :access_token
21
- attr_accessor :refresh_token
21
+ attr_accessor :session
22
+ attr_accessor :user_agent
22
23
 
23
24
  def create_post(user_did:, message:)
24
25
  create_record(
@@ -32,36 +33,56 @@ module Yonder
32
33
  end
33
34
 
34
35
  def create_record(user_did:, record:, collection:)
35
- post("/com.atproto.repo.createRecord", params: {
36
- repo: user_did,
37
- collection: collection,
38
- record: record
39
- })
36
+ post(
37
+ endpoint: "/com.atproto.repo.createRecord",
38
+ params: {
39
+ repo: user_did,
40
+ collection: collection,
41
+ record: record
42
+ }
43
+ )
40
44
  end
41
45
 
42
46
  def create_session(username:, password:)
43
- post("/com.atproto.server.createSession", params: {
44
- identifier: username,
45
- password: password
46
- })
47
+ response = post(
48
+ endpoint: "/com.atproto.server.createSession",
49
+ params: {
50
+ identifier: username,
51
+ password: password
52
+ }
53
+ )
54
+
55
+ @session = Session.from_json(response)
56
+ true
47
57
  end
48
58
 
49
- def renew_session(renewal_token)
50
- post("/com.atproto.server.refreshSession")
59
+ def refresh_session
60
+ response = post(
61
+ endpoint: "/com.atproto.server.refreshSession",
62
+ access_token: @session&.refresh_token
63
+ )
64
+
65
+ @session = Session.from_json(response)
66
+ true
51
67
  end
52
68
 
53
- def get(endpoint)
54
- make_api_request(endpoint, method: :get)
69
+ def get(endpoint:)
70
+ make_api_request(endpoint: endpoint, method: :get)
55
71
  end
56
72
 
57
- def post(endpoint, params: {})
58
- make_api_request(endpoint, method: :post, params: params)
73
+ def post(endpoint:, params: {}, access_token: nil)
74
+ make_api_request(endpoint: endpoint, method: :post, params: params, access_token: access_token)
59
75
  end
60
76
 
61
77
  private
62
78
 
63
- def make_api_request(endpoint, method: :get, params: {})
64
- response = http_client.request(method, endpoint, json: params)
79
+ def make_api_request(endpoint:, method: :get, params: {}, access_token: nil)
80
+ access_token ||= @session&.access_token
81
+
82
+ client = http_client
83
+ client = client.bearer_auth(access_token) unless access_token.nil?
84
+
85
+ response = client.request(method, endpoint, json: params)
65
86
 
66
87
  response.raise_for_status
67
88
  response.json
@@ -73,15 +94,11 @@ module Yonder
73
94
  end
74
95
 
75
96
  def http_client
76
- client = HTTPX.with(
97
+ HTTPX.with(
77
98
  origin: @api_host || BASE_URL,
78
99
  headers: { "user-agent": @user_agent || "yonder v#{Yonder::VERSION}" },
79
100
  base_path: '/xrpc'
80
101
  ).plugin(:auth)
81
-
82
- return client if @access_token.nil?
83
-
84
- client.bearer_auth(@access_token)
85
102
  end
86
103
  end
87
104
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yonder
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '0.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Bogan
@@ -32,6 +32,7 @@ extra_rdoc_files: []
32
32
  files:
33
33
  - lib/yonder.rb
34
34
  - lib/yonder/errors.rb
35
+ - lib/yonder/session.rb
35
36
  - lib/yonder/version.rb
36
37
  homepage: http://github.com/waferbaby/yonder
37
38
  licenses: