authsignal-ruby 3.0.1 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2bf6c96e9f79775fa1d3db3deb5ec5258a8c651e1b4fb8c1c3740c3f5ebd5b6
4
- data.tar.gz: 90124d4aa0b3111cd4b52424c78b16f208d4179991e8dcfc52f48fc735483bba
3
+ metadata.gz: 9c4fa986346960144f15616720f21828275ffabdf16a817e05cadb4ee3c33565
4
+ data.tar.gz: 0b748a47e76e7af70786179cfde9fa037188da9c6beee9d25194e47f61adf98e
5
5
  SHA512:
6
- metadata.gz: 1cb34330978dc710806be016761805b82c7cc442ab58752baf33ff62bff64a4476c7f62fce114e10f3dae144c100ae4fe05d167cd66435d3d38fdcb3adb63612
7
- data.tar.gz: 5dca5b72d6c09fa2bfe78768d451661f6bad5d1188257a6d7523f51f389956c51214af1250c2f318706274b080c9a9ada019ad2f5e246f0daface09e05351096
6
+ metadata.gz: 6dfcbd7a4ef015d250e33eebf556f1c651d440de45df9155791748d77f9668e57a40d0e27fb5091290fe178130c3dd70c09cc8aa85829855e317ab263637c5af
7
+ data.tar.gz: 9ed3d53d1cd3772b2c6744dfacf1ff1471f09e743e1b9ba102f3d731b0c39e185533bad167ceb6f536c0b77c2be49b79094e46fafca8840542dc5b73fd1eb31d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- authsignal-ruby (3.0.1)
4
+ authsignal-ruby (4.1.0)
5
5
  faraday (>= 2)
6
6
  faraday-retry (~> 2.2)
7
7
 
@@ -14,7 +14,7 @@ GEM
14
14
  crack (1.0.0)
15
15
  bigdecimal
16
16
  rexml
17
- diff-lcs (1.5.0)
17
+ diff-lcs (1.5.1)
18
18
  faraday (2.12.0)
19
19
  faraday-net_http (>= 2.0, < 3.4)
20
20
  json
@@ -29,21 +29,21 @@ GEM
29
29
  net-http (0.4.1)
30
30
  uri
31
31
  public_suffix (6.0.1)
32
- rake (13.0.6)
32
+ rake (13.2.1)
33
33
  rexml (3.3.8)
34
- rspec (3.11.0)
35
- rspec-core (~> 3.11.0)
36
- rspec-expectations (~> 3.11.0)
37
- rspec-mocks (~> 3.11.0)
38
- rspec-core (3.11.0)
39
- rspec-support (~> 3.11.0)
40
- rspec-expectations (3.11.0)
34
+ rspec (3.13.0)
35
+ rspec-core (~> 3.13.0)
36
+ rspec-expectations (~> 3.13.0)
37
+ rspec-mocks (~> 3.13.0)
38
+ rspec-core (3.13.2)
39
+ rspec-support (~> 3.13.0)
40
+ rspec-expectations (3.13.3)
41
41
  diff-lcs (>= 1.2.0, < 2.0)
42
- rspec-support (~> 3.11.0)
43
- rspec-mocks (3.11.1)
42
+ rspec-support (~> 3.13.0)
43
+ rspec-mocks (3.13.2)
44
44
  diff-lcs (>= 1.2.0, < 2.0)
45
- rspec-support (~> 3.11.0)
46
- rspec-support (3.11.0)
45
+ rspec-support (~> 3.13.0)
46
+ rspec-support (3.13.1)
47
47
  uri (0.13.1)
48
48
  webmock (3.24.0)
49
49
  addressable (>= 2.8.0)
@@ -51,6 +51,7 @@ GEM
51
51
  hashdiff (>= 0.4.0, < 2.0.0)
52
52
 
53
53
  PLATFORMS
54
+ arm64-darwin-24
54
55
  ruby
55
56
 
56
57
  DEPENDENCIES
@@ -60,4 +61,4 @@ DEPENDENCIES
60
61
  webmock (~> 3.14)
61
62
 
62
63
  BUNDLED WITH
63
- 2.3.21
64
+ 2.5.16
data/README.md CHANGED
@@ -64,6 +64,7 @@ Authsignal's server side signal API has four main api calls `track`, `get_action
64
64
  For more details on these api calls, refer to our [official Ruby SDK docs](https://docs.authsignal.com/sdks/server/ruby#track).
65
65
 
66
66
  Example:
67
+
67
68
  ```ruby
68
69
  Authsignal.track user_id: 'AS_001', action: 'withdraw', idempotency_key: 'a_random_hash'
69
70
 
@@ -78,9 +79,10 @@ Authsignal.track user_id: 'AS_001', action: 'withdraw', idempotency_key: 'a_rand
78
79
 
79
80
  ### Response & Error handling
80
81
 
81
- Authsignal client come with 2 flavors of responses, by default calling the signal APIs will returns payload in hash.
82
+ The Authsignal SDK offers two response formats. By default, its methods return the payload in hash format.
82
83
 
83
84
  Example:
85
+
84
86
  ```ruby
85
87
  Authsignal.enroll_verified_authenticator user_id: 'AS_001',
86
88
  authenticator: {
@@ -96,10 +98,10 @@ Authsignal.enroll_verified_authenticator user_id: 'AS_001',
96
98
  # }
97
99
  ```
98
100
 
99
- All signal APIs come with a bang(`!`) counterpart, which will raise `Authsignal::ApiError` when the request is unsuccessful.
100
-
101
+ All methods have a bang (!) counterpart that raises an Authsignal::ApiError if the request fails.
101
102
 
102
103
  Example:
104
+
103
105
  ```ruby
104
106
  Authsignal.enroll_verified_authenticator! user_id: 'AS_001',
105
107
  authenticator: {
@@ -109,6 +111,7 @@ Authsignal.enroll_verified_authenticator! user_id: 'AS_001',
109
111
  # raise:
110
112
  # <Authsignal::ApiError: invalid_request status: 400, error: invalid_request, description: /body/oobChannel must be equal to one o...
111
113
  ```
114
+
112
115
  ## Development
113
116
 
114
117
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` or `bundle exec rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -65,14 +65,20 @@ module Authsignal
65
65
 
66
66
  def validate_challenge(user_id: nil, token:, action: nil)
67
67
  path = "validate"
68
+ body = { user_id: user_id, token: token, action: action }
68
69
 
69
- make_request(:post, path, body: { user_id: user_id, token: token, action: action })
70
+ make_request(:post, path, body: body)
70
71
  end
71
72
 
72
73
  def get_action(user_id, action, idempotency_key)
73
74
  make_request(:get, "users/#{url_encode(user_id)}/actions/#{action}/#{url_encode(idempotency_key)}")
74
75
  end
75
76
 
77
+ def update_action_state(user_id:, action:, idempotency_key:, state:)
78
+ body = { state: state }
79
+ make_request(:patch, "users/#{url_encode(user_id)}/actions/#{action}/#{url_encode(idempotency_key)}", body: body)
80
+ end
81
+
76
82
  ##
77
83
  # TODO: delete identify?
78
84
  def identify(user_id, user_payload)
@@ -83,16 +89,12 @@ module Authsignal
83
89
  make_request(:post, "users/#{url_encode(user_id)}/authenticators", body: authenticator)
84
90
  end
85
91
 
86
- def delete_user_authenticator(user_id:, user_authenticator_id:)
92
+ def delete_authenticator(user_id:, user_authenticator_id:)
87
93
  make_request(:delete, "users/#{url_encode(user_id)}/authenticators/#{url_encode(user_authenticator_id)}")
88
94
  end
89
95
 
90
96
  private
91
97
 
92
- def make_request(method, path, body: nil, headers: nil)
93
- @client.public_send(method, path, body, headers)
94
- end
95
-
96
98
  def url_encode(s)
97
99
  ERB::Util.url_encode(s)
98
100
  end
@@ -108,5 +110,12 @@ module Authsignal
108
110
  def require_api_key
109
111
  Authsignal.configuration.api_secret_key || print_api_key_warning
110
112
  end
113
+
114
+ def make_request(method, path, body: nil, headers: nil)
115
+ if body.is_a?(Hash)
116
+ body = body.reject { |_, v| v.nil? }
117
+ end
118
+ @client.public_send(method, path, body, headers)
119
+ end
111
120
  end
112
121
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Authsignal
4
- VERSION = "3.0.1"
4
+ VERSION = "4.1.0"
5
5
  end
data/lib/authsignal.rb CHANGED
@@ -49,14 +49,21 @@ module Authsignal
49
49
  handle_response(response)
50
50
  end
51
51
 
52
+ def update_action_state(user_id:, action:, idempotency_key:, state:)
53
+ # NOTE: Rely on API to respond when given invalid state
54
+ response = Client.new.update_action_state(user_id: user_id, action: action, idempotency_key: idempotency_key, state: state)
55
+
56
+ handle_response(response)
57
+ end
58
+
52
59
  def enroll_verified_authenticator(user_id:, authenticator:)
53
60
  response = Client.new.enroll_verified_authenticator(user_id, authenticator)
54
61
 
55
62
  handle_response(response)
56
63
  end
57
64
 
58
- def delete_user_authenticator(user_id:, user_authenticator_id: )
59
- response = Client.new.delete_user_authenticator(user_id: user_id, user_authenticator_id: user_authenticator_id)
65
+ def delete_authenticator(user_id:, user_authenticator_id: )
66
+ response = Client.new.delete_authenticator(user_id: user_id, user_authenticator_id: user_authenticator_id)
60
67
 
61
68
  handle_response(response)
62
69
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authsignal-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - justinsoong
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-15 00:00:00.000000000 Z
11
+ date: 2024-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday