widgit_accounts_sdk 0.0.6 → 0.0.7
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 +4 -4
- data/lib/widgit_accounts_sdk/client.rb +72 -0
- data/lib/widgit_accounts_sdk/configuration.rb +6 -0
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c55743e80bab6e1a33ac5ddd8bba686d00ce44f4a2322bf32603bf0a2f3d93b
|
4
|
+
data.tar.gz: f4ae9bfab8e4fc08bdf6a4a9d68e8ed1486390860433f0c01820b5c4f9a6cf34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4af367fbf76278d2a46b20ee2b8d0284f234217fd03010eee4e97d17d4141dbb6e79ed26c65b0dfe35f30f1a6ba4a22c21f294f4b716afb9768e85ac7ca45898
|
7
|
+
data.tar.gz: 750e4532950ca2d82d0ca3702df03cbc1f8109e51cdd2222ef2c0491d3223d5a5437c9b120c53d096c74672ae445d3ac1fd5c21e341f1c6dd5f9711c02752352
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'uri'
|
2
2
|
require 'net/http'
|
3
|
+
require 'jwt'
|
3
4
|
|
4
5
|
module WidgitAccountsSdk
|
5
6
|
module Client
|
@@ -64,6 +65,64 @@ module WidgitAccountsSdk
|
|
64
65
|
return response
|
65
66
|
end
|
66
67
|
|
68
|
+
def valid_access_token?(token)
|
69
|
+
begin
|
70
|
+
JWT.decode(
|
71
|
+
token,
|
72
|
+
nil,
|
73
|
+
true,
|
74
|
+
{ algorithms: ['RS256'], jwks: method(:jwks_set) }
|
75
|
+
)
|
76
|
+
true
|
77
|
+
rescue JWT::ExpiredSignature
|
78
|
+
:expired
|
79
|
+
rescue JWT::JWKError
|
80
|
+
:jwk_error
|
81
|
+
rescue JWT::DecodeError => e
|
82
|
+
:error
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def access_token_payload(token)
|
87
|
+
begin
|
88
|
+
payload, _ = JWT.decode(
|
89
|
+
token,
|
90
|
+
nil,
|
91
|
+
true,
|
92
|
+
{ algorithms: ['RS256'], jwks: method(:jwks_set) }
|
93
|
+
)
|
94
|
+
{ valid: true, payload: payload.symbolize_keys }
|
95
|
+
rescue JWT::ExpiredSignature
|
96
|
+
{ valid: false, error: :expired }
|
97
|
+
rescue JWT::JWKError
|
98
|
+
{ valid: false, error: :jwk_error }
|
99
|
+
rescue JWT::DecodeError => e
|
100
|
+
{ valid: false, error: :error }
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def refresh_access_token(refresh_token)
|
105
|
+
refresh_response = request("/oauth/token", :post, {
|
106
|
+
grant_type: 'refresh_token',
|
107
|
+
refresh_token: refresh_token,
|
108
|
+
redirect_uri: WidgitAccountsSdk.configuration.redirect_uri,
|
109
|
+
client_id: WidgitAccountsSdk.configuration.client_id,
|
110
|
+
client_secret: WidgitAccountsSdk.configuration.client_secret
|
111
|
+
})
|
112
|
+
|
113
|
+
if refresh_response["error"].present?
|
114
|
+
{ error: refresh_response["error"] }
|
115
|
+
else
|
116
|
+
{
|
117
|
+
access_token: refresh_response["access_token"],
|
118
|
+
refresh_token: refresh_response["refresh_token"],
|
119
|
+
id_token: refresh_response["id_token"],
|
120
|
+
expires_in: refresh_response["expires_in"],
|
121
|
+
created_at: refresh_response["created_at"]
|
122
|
+
}
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
67
126
|
private
|
68
127
|
def request(path, method = :get, params = {})
|
69
128
|
uri = URI.parse("#{WidgitAccountsSdk.configuration.host}#{path}")
|
@@ -101,5 +160,18 @@ module WidgitAccountsSdk
|
|
101
160
|
def success
|
102
161
|
{ 'status' => 'success', 'code' => 200 }
|
103
162
|
end
|
163
|
+
|
164
|
+
def jwks_set(options = {})
|
165
|
+
if options[:kid_not_found] && @cache_last_update < Time.now.to_i - 300
|
166
|
+
logger.info("Invalidating JWK cache. #{options[:kid]} not found from previous cache")
|
167
|
+
@cached_keys = nil
|
168
|
+
end
|
169
|
+
|
170
|
+
@cached_keys ||= begin
|
171
|
+
@cache_last_update = Time.now.to_i
|
172
|
+
jwks_hash = request('/oauth/discovery/keys')
|
173
|
+
JWT::JWK::Set.new(jwks_hash)
|
174
|
+
end
|
175
|
+
end
|
104
176
|
end
|
105
177
|
end
|
@@ -3,11 +3,17 @@ module WidgitAccountsSdk
|
|
3
3
|
attr_accessor :host
|
4
4
|
attr_accessor :api_key
|
5
5
|
attr_accessor :watch_webhook_url
|
6
|
+
attr_accessor :redirect_uri
|
7
|
+
attr_accessor :client_id
|
8
|
+
attr_accessor :client_secret
|
6
9
|
|
7
10
|
def initialize
|
8
11
|
@api_key = nil
|
9
12
|
@host = nil
|
10
13
|
@watch_webhook_url
|
14
|
+
@redirect_uri = nil
|
15
|
+
@client_id = nil
|
16
|
+
@client_secret = nil
|
11
17
|
end
|
12
18
|
end
|
13
19
|
end
|
metadata
CHANGED
@@ -1,16 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: widgit_accounts_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stu Wright
|
8
8
|
- James Sherriff
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
12
|
+
date: 2025-09-19 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: jwt
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 3.1.2
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 3.1.2
|
14
28
|
description: A Ruby client for interacting with the Widgit Accounts API
|
15
29
|
email: james.sherriff@widgit.com
|
16
30
|
executables: []
|
@@ -20,10 +34,10 @@ files:
|
|
20
34
|
- lib/widgit_accounts_sdk.rb
|
21
35
|
- lib/widgit_accounts_sdk/client.rb
|
22
36
|
- lib/widgit_accounts_sdk/configuration.rb
|
23
|
-
homepage:
|
37
|
+
homepage:
|
24
38
|
licenses: []
|
25
39
|
metadata: {}
|
26
|
-
post_install_message:
|
40
|
+
post_install_message:
|
27
41
|
rdoc_options: []
|
28
42
|
require_paths:
|
29
43
|
- lib
|
@@ -38,8 +52,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
38
52
|
- !ruby/object:Gem::Version
|
39
53
|
version: '0'
|
40
54
|
requirements: []
|
41
|
-
rubygems_version: 3.
|
42
|
-
signing_key:
|
55
|
+
rubygems_version: 3.4.1
|
56
|
+
signing_key:
|
43
57
|
specification_version: 4
|
44
58
|
summary: Widgit Accounts API Client Ruby Gem
|
45
59
|
test_files: []
|