wcc-data 0.3.5 → 0.4.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.
- checksums.yaml +4 -4
- data/lib/wcc/data/faraday_client_app_token_auth.rb +63 -44
- data/lib/wcc/data/nucleus/campus.rb +11 -0
- data/lib/wcc/data/version.rb +1 -1
- data/wcc-data.gemspec +3 -2
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a718c08c0dbf3d2d57f65df80a24c68a2a25753
|
4
|
+
data.tar.gz: 1830d0f036864cc107cba7e91fe235a391cd7ed7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70dc25cd23dbd1a006f94a11e2c6ab3ab2315e585a5aeb67ad16f64a059a564b3762ec4184ee8ee7be825c4e7be1626a28c7ba7120ac760aa217e8e644965e7f
|
7
|
+
data.tar.gz: 668121dcd24aec8da9fc6421cb5d1d991da0f99074666b942668193c2427e21715e3d05a5bdf52428a5a2b7dd7a783c59570e7d5008d223192ab95af0e3e2042
|
@@ -1,64 +1,83 @@
|
|
1
|
+
|
2
|
+
begin
|
3
|
+
gem 'faraday'
|
4
|
+
require 'faraday'
|
5
|
+
rescue Gem::LoadError
|
6
|
+
# suppress
|
7
|
+
end
|
8
|
+
|
9
|
+
|
1
10
|
module WCC::Data
|
2
|
-
|
3
|
-
class
|
4
|
-
|
5
|
-
|
11
|
+
if defined?(Faraday)
|
12
|
+
class FaradayClientAppTokenAuth < Faraday::Middleware
|
13
|
+
class RedisCache
|
14
|
+
DEFAULT_CACHE_KEY = "org.watermark.data.client-app-token-cache-store"
|
15
|
+
attr_reader :connection, :cache_key
|
6
16
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
17
|
+
def initialize(connection, cache_key: DEFAULT_CACHE_KEY)
|
18
|
+
@connection = connection
|
19
|
+
@cache_key = cache_key
|
20
|
+
end
|
11
21
|
|
12
|
-
|
13
|
-
|
14
|
-
|
22
|
+
def [](hostname)
|
23
|
+
connection.call { |r| r.hget cache_key, hostname }
|
24
|
+
end
|
15
25
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
26
|
+
def []=(hostname, token)
|
27
|
+
if token
|
28
|
+
connection.call { |r| r.hset cache_key, hostname, token }
|
29
|
+
else
|
30
|
+
connection.call { |r| r.hdel cache_key, hostname }
|
31
|
+
end
|
21
32
|
end
|
22
33
|
end
|
23
|
-
end
|
24
34
|
|
25
|
-
|
35
|
+
attr_reader :cache, :token_factory
|
26
36
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
37
|
+
def initialize(app, cache: default_cache, token_factory: method(:default_token_factory))
|
38
|
+
super(app)
|
39
|
+
@cache = cache
|
40
|
+
@token_factory = token_factory
|
41
|
+
end
|
32
42
|
|
33
|
-
|
34
|
-
|
35
|
-
|
43
|
+
def token_for(host)
|
44
|
+
@cache[host] ||= token_factory.(host)
|
45
|
+
end
|
36
46
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
+
def call(env, retry_on_forbidden: true)
|
48
|
+
request_body = env[:body]
|
49
|
+
host = env[:url].host
|
50
|
+
env[:request_headers]["Authorization"] = "Bearer #{token_for(host)}"
|
51
|
+
@app.call(env).on_complete do |response_env|
|
52
|
+
response = Faraday::Response.new(response_env)
|
53
|
+
cache[host] = nil unless response.success?
|
54
|
+
if response.status == 403 && retry_on_forbidden
|
55
|
+
env[:body] = request_body
|
56
|
+
call(env, retry_on_forbidden: false)
|
57
|
+
end
|
47
58
|
end
|
48
59
|
end
|
49
|
-
end
|
50
60
|
|
51
|
-
|
61
|
+
private
|
52
62
|
|
53
|
-
|
54
|
-
|
55
|
-
|
63
|
+
def default_token_factory(host)
|
64
|
+
WCC::Data::Nucleus::ClientAppToken.create(hostname: host).token
|
65
|
+
end
|
56
66
|
|
57
|
-
|
58
|
-
|
67
|
+
def default_cache
|
68
|
+
RedisCache.new(Sidekiq.method(:redis))
|
69
|
+
end
|
70
|
+
end
|
71
|
+
else
|
72
|
+
class FaradayClientAppTokenAuth
|
73
|
+
def initialize(app, cache: default_cache, token_factory: method(:default_token_factory))
|
74
|
+
raise NotSupportedError, 'Please include the "faraday" gem to use this authentication method'
|
75
|
+
end
|
59
76
|
end
|
60
77
|
end
|
61
78
|
end
|
62
79
|
|
63
|
-
Faraday
|
80
|
+
if defined?(Faraday)
|
81
|
+
Faraday::Middleware.register_middleware :client_app_token => lambda { WCC::Data::FaradayClientAppTokenAuth }
|
82
|
+
end
|
64
83
|
|
@@ -54,6 +54,17 @@ module WCC::Data::Nucleus
|
|
54
54
|
state: 'TX',
|
55
55
|
zip: '75034',
|
56
56
|
geo: [33.130761, -96.822322]
|
57
|
+
},
|
58
|
+
{
|
59
|
+
id: 5,
|
60
|
+
code: 'SDL',
|
61
|
+
name: 'South Dallas',
|
62
|
+
key: :south_dallas,
|
63
|
+
street: '3400 Garden Ln',
|
64
|
+
city: 'Dallas',
|
65
|
+
state: 'TX',
|
66
|
+
zip: '75215',
|
67
|
+
geo: [32.758418, -96.743966]
|
57
68
|
}
|
58
69
|
]
|
59
70
|
end
|
data/lib/wcc/data/version.rb
CHANGED
data/wcc-data.gemspec
CHANGED
@@ -17,9 +17,10 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ['lib']
|
19
19
|
|
20
|
-
spec.required_ruby_version = '
|
20
|
+
spec.required_ruby_version = '>= 2.2'
|
21
21
|
|
22
|
-
|
22
|
+
# Required if you use faraday_client_app_token_auth but must be included separately
|
23
|
+
spec.add_development_dependency "faraday", "~> 0.8"
|
23
24
|
|
24
25
|
spec.add_development_dependency "bundler", "~> 1.3"
|
25
26
|
spec.add_development_dependency "dotenv", "~> 0.10.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wcc-data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Watermark Dev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -17,7 +17,7 @@ dependencies:
|
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0.8'
|
20
|
-
type: :
|
20
|
+
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
@@ -139,7 +139,7 @@ require_paths:
|
|
139
139
|
- lib
|
140
140
|
required_ruby_version: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
|
-
- - "
|
142
|
+
- - ">="
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '2.2'
|
145
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
@@ -149,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
149
|
version: '0'
|
150
150
|
requirements: []
|
151
151
|
rubyforge_project:
|
152
|
-
rubygems_version: 2.
|
152
|
+
rubygems_version: 2.5.2.3
|
153
153
|
signing_key:
|
154
154
|
specification_version: 4
|
155
155
|
summary: Watermark's library for interapp communication via APIs
|