authz_jurnal_client 0.0.2 → 0.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: b2e2671a51a6d5e329bcca54d12ec3dd4586f1da11ad2e075caa588a7f186e2d
4
- data.tar.gz: 1664e4e21b152ec7f0b82027f4535ee02608782b16249394edd63fc0335e4be0
3
+ metadata.gz: 8629db96453f7a2bcb57a10cc33e24225dc8d2c64887a73d1858f8f29c9d7e07
4
+ data.tar.gz: c3d079a6784968c0353a3cc379f98755228e72b2f8557e16685ee487f9f1cb58
5
5
  SHA512:
6
- metadata.gz: 50c70026e1e0af20ca6d41aeff01652ed8e2928bfd27e41406753f9de56926d0f197a3f0a5232f19b5ed5a59b672f300852dce27f99d71b62f56709656d230db
7
- data.tar.gz: bcbe211f73cf946608e353d01cd4bbbff8a6739d832bcc07991c5838b4dbf59c9bed35f22de16eecbca550c1e14df06e7603f1663261d1aec2750228140484c4
6
+ metadata.gz: 315f869e05b9640414729c70380fd582977def884d9cbb3072e93e17f280c376643ba72f65781b2808f0c82b4c20e51f2170f59abbfeef8a2b311abd727594d2
7
+ data.tar.gz: d01429920786ab9e8f54e8ebc4858df688c813789b9ca641db696534dae0fdd39d37df96a67a71339bd696a9301d7de5bc3767260371b7c0dfa4fcbc5cc22662
data/Gemfile ADDED
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in authz_service_jurnal.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 13.0"
9
+
10
+ gem "rspec", "~> 3.0"
11
+
12
+ gem "rubocop", "~> 1.21"
13
+
14
+ gem "redis"
15
+
16
+ gem "faraday"
17
+
18
+ gem "byebug"
19
+
data/Gemfile.lock ADDED
@@ -0,0 +1,71 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ authz_jurnal_client (0.0.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ ast (2.4.2)
10
+ byebug (11.1.3)
11
+ connection_pool (2.3.0)
12
+ diff-lcs (1.5.0)
13
+ faraday (2.7.4)
14
+ faraday-net_http (>= 2.0, < 3.1)
15
+ ruby2_keywords (>= 0.0.4)
16
+ faraday-net_http (3.0.2)
17
+ json (2.6.3)
18
+ parallel (1.22.1)
19
+ parser (3.2.0.0)
20
+ ast (~> 2.4.1)
21
+ rainbow (3.1.1)
22
+ rake (13.0.6)
23
+ redis (5.0.6)
24
+ redis-client (>= 0.9.0)
25
+ redis-client (0.12.1)
26
+ connection_pool
27
+ regexp_parser (2.6.2)
28
+ rexml (3.2.5)
29
+ rspec (3.12.0)
30
+ rspec-core (~> 3.12.0)
31
+ rspec-expectations (~> 3.12.0)
32
+ rspec-mocks (~> 3.12.0)
33
+ rspec-core (3.12.0)
34
+ rspec-support (~> 3.12.0)
35
+ rspec-expectations (3.12.2)
36
+ diff-lcs (>= 1.2.0, < 2.0)
37
+ rspec-support (~> 3.12.0)
38
+ rspec-mocks (3.12.3)
39
+ diff-lcs (>= 1.2.0, < 2.0)
40
+ rspec-support (~> 3.12.0)
41
+ rspec-support (3.12.0)
42
+ rubocop (1.44.1)
43
+ json (~> 2.3)
44
+ parallel (~> 1.10)
45
+ parser (>= 3.2.0.0)
46
+ rainbow (>= 2.2.2, < 4.0)
47
+ regexp_parser (>= 1.8, < 3.0)
48
+ rexml (>= 3.2.5, < 4.0)
49
+ rubocop-ast (>= 1.24.1, < 2.0)
50
+ ruby-progressbar (~> 1.7)
51
+ unicode-display_width (>= 2.4.0, < 3.0)
52
+ rubocop-ast (1.24.1)
53
+ parser (>= 3.1.1.0)
54
+ ruby-progressbar (1.11.0)
55
+ ruby2_keywords (0.0.5)
56
+ unicode-display_width (2.4.2)
57
+
58
+ PLATFORMS
59
+ ruby
60
+
61
+ DEPENDENCIES
62
+ authz_jurnal_client!
63
+ byebug
64
+ faraday
65
+ rake (~> 13.0)
66
+ redis
67
+ rspec (~> 3.0)
68
+ rubocop (~> 1.21)
69
+
70
+ BUNDLED WITH
71
+ 1.17.3
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ require "rubocop/rake_task"
9
+
10
+ RuboCop::RakeTask.new
11
+
12
+ task default: %i[spec rubocop]
Binary file
Binary file
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AuthzJurnalClient
4
+ VERSION = "0.0.3"
5
+ end
@@ -0,0 +1,59 @@
1
+ require "ostruct"
2
+ require "json"
3
+ require "faraday"
4
+ require "redis"
5
+
6
+ require_relative "authz_jurnal_client/version"
7
+
8
+ module AuthzJurnalClient
9
+ class Error < StandardError; end
10
+
11
+ class UserRoles
12
+ class << self
13
+ attr_accessor :redis, :domain, :token, :expiry
14
+ def config(opts = {})
15
+ @redis = if opts[:redis].is_a? Hash
16
+ Redis.new(opts[:redis])
17
+ else
18
+ opts[:redis]
19
+ end
20
+ @domain = opts[:domain]
21
+ @headers = {"Authorization" => "Basic #{token}"}
22
+ @expiry = opts[:expiry] || 3600 * 5
23
+ end
24
+
25
+ def call(id, cid)
26
+ if @redis
27
+ cached = @redis.get(make_key(id, cid))
28
+ return get_roles(cached) if cached
29
+ end
30
+
31
+ response = backend_request(id, cid)
32
+ return unless response.success?
33
+
34
+ @redis&.setex(make_key(id, cid), @expiry, response.body)
35
+ get_roles(response.body)
36
+ rescue Redis::CannotConnectError
37
+ response = backend_request(id, cid)
38
+ get_roles(response.body)
39
+ end
40
+
41
+ def backend_request(id, cid)
42
+ conn = Faraday.new("#{@domain}/api/v1/users/#{id}") do |f|
43
+ f.adapter :net_http
44
+ end
45
+
46
+ conn.get('roles', { company_id: cid }, @headers)
47
+ end
48
+
49
+ def make_key(id, cid)
50
+ "manage_role:#{id}-#{cid}"
51
+ end
52
+
53
+ def get_roles(j)
54
+ res = JSON.parse(j)
55
+ res['data']['roles'] if res['data'] && res['data']['roles']
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,4 @@
1
+ module AuthzJurnalClient
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authz_jurnal_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alam Topani
@@ -17,8 +17,16 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - Gemfile
21
+ - Gemfile.lock
20
22
  - README.md
21
- homepage: https://bitbucket.org/jurnal/authz-jurnal-client/src/master/
23
+ - Rakefile
24
+ - authz_jurnal_client-0.0.1.gem
25
+ - authz_jurnal_client-0.0.2.gem
26
+ - lib/authz_jurnal_client.rb
27
+ - lib/authz_jurnal_client/version.rb
28
+ - lib/sig/authz_jurnal_client.rbs
29
+ homepage: https://bitbucket.org/jurnal/authz-jurnal-client/src/nat-dev/
22
30
  licenses: []
23
31
  metadata: {}
24
32
  post_install_message: