prx_access 0.3.0 → 0.4.0

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: 4f8b7ef136e13469b08b4eb1c280c39bfc69e7305edb5c94749a255af0db0377
4
- data.tar.gz: 6671c40a518f2d37f9e716c7b48996f56a3add10b218180727d5a0af5618ab79
3
+ metadata.gz: 42e0393e6bd18939c03fbe4d196e1a767b8fd421fc2ada47677b98b7a9aaa0d0
4
+ data.tar.gz: de13e62e4a9cf58d1975bf7a87a29f39c7646124ff1eca76c095149fbef7d547
5
5
  SHA512:
6
- metadata.gz: 970721dfc0033d9eb819a7cdf34cc14ddfda5c258528d4b0de389680edb400a744da316d1738a61a680b2c6abc03f2c65fb520a51cd6b16f1e1876a009f189e0
7
- data.tar.gz: 604000f9edb872d73c83914bc9f0e637a36d0b3e54d9204c10ebdb1aec411b9529cc53d8d0c1adf55c5f099a96bd53682da38b9c362904893aa404eaa8ce18b7
6
+ metadata.gz: 342dec3da2d419e58544a17c0e0ffde8d3c4d41fb70668d140e11fde2f3aeb693e51e21956d84eb0a1fe06be9ac47554ddb500f774761d7a97a52f0f45d2d84d
7
+ data.tar.gz: cae8fe83ad8047b3035e76d1cf9f5ae6c42915adae8e9d2cb7a88f4a752ec3fd4d4e74409c4047e634482c6e1002be4c7b73b56b30938ee19f02363034d87962
@@ -0,0 +1,2 @@
1
+ # Apply Standard fixes
2
+ 8674c73507b6460b6f6a4446c90e677bef6c60c4
@@ -0,0 +1,14 @@
1
+ name: Lint
2
+ on: push
3
+ jobs:
4
+ lint:
5
+ runs-on: ubuntu-latest
6
+ steps:
7
+ - name: Checkout code
8
+ uses: actions/checkout@v7
9
+ - name: Install Ruby and gems
10
+ uses: ruby/setup-ruby@v1
11
+ with:
12
+ bundler-cache: true
13
+ - name: Lint
14
+ run: bundle exec standardrb
@@ -0,0 +1,14 @@
1
+ name: Test
2
+ on: push
3
+ jobs:
4
+ test:
5
+ runs-on: ubuntu-latest
6
+ steps:
7
+ - name: Checkout code
8
+ uses: actions/checkout@v7
9
+ - name: Install Ruby and gems
10
+ uses: ruby/setup-ruby@v1
11
+ with:
12
+ bundler-cache: true
13
+ - name: Run the tests
14
+ run: bundle exec rspec
data/.standard.yml ADDED
@@ -0,0 +1,2 @@
1
+ fix: false
2
+ format: simple
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 4.0.0
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in prx_access.gemspec
6
6
  gemspec
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
+ require "standard/rake"
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
5
6
 
6
- task :default => :spec
7
+ task default: :spec
@@ -1,9 +1,9 @@
1
- require 'hyperresource'
2
- require 'active_support/core_ext/hash'
3
- require 'oauth2'
1
+ require "hyperresource"
2
+ require "active_support/core_ext/hash"
3
+ require "oauth2"
4
+ require "faraday/excon"
4
5
 
5
6
  module PRXAccess
6
-
7
7
  class PRXHyperResource < HyperResource
8
8
  def incoming_body_filter(hash)
9
9
  super(hash.deep_transform_keys { |key| key.to_s.underscore })
@@ -16,104 +16,101 @@ module PRXAccess
16
16
  class Link < HyperResource::Link
17
17
  attr_accessor :type, :profile
18
18
 
19
- def initialize(resource, link_spec={})
19
+ def initialize(resource, link_spec = {})
20
20
  super
21
- self.type = link_spec['type']
22
- self.profile = link_spec['profile']
21
+ self.type = link_spec["type"]
22
+ self.profile = link_spec["profile"]
23
23
  end
24
24
 
25
25
  def where(params)
26
26
  super.tap do |res|
27
- res.type = self.type
28
- res.profile = self.profile
27
+ res.type = type
28
+ res.profile = profile
29
29
  end
30
30
  end
31
31
 
32
32
  def headers(*args)
33
33
  super.tap do |res|
34
34
  if args.count > 0
35
- res.type = self.type
36
- res.profile = self.profile
35
+ res.type = type
36
+ res.profile = profile
37
37
  end
38
38
  end
39
39
  end
40
40
 
41
- def post_response(attrs=nil)
42
- attrs ||= self.resource.attributes
43
- attrs = (self.resource.default_attributes || {}).merge(attrs)
41
+ def post_response(attrs = nil)
42
+ attrs ||= resource.attributes
43
+ attrs = (resource.default_attributes || {}).merge(attrs)
44
44
 
45
45
  # adding this line to call outgoing_body_filter
46
46
  attrs = resource.outgoing_body_filter(attrs)
47
47
 
48
- response = faraday_connection.post do |req|
49
- req.body = self.resource.adapter.serialize(attrs)
48
+ faraday_connection.post do |req|
49
+ req.body = resource.adapter.serialize(attrs)
50
50
  end
51
- response
52
51
  end
53
52
 
54
- def put_response(attrs=nil)
55
- attrs ||= self.resource.attributes
56
- attrs = (self.resource.default_attributes || {}).merge(attrs)
53
+ def put_response(attrs = nil)
54
+ attrs ||= resource.attributes
55
+ attrs = (resource.default_attributes || {}).merge(attrs)
57
56
 
58
57
  # adding this line to call outgoing_body_filter
59
58
  attrs = resource.outgoing_body_filter(attrs)
60
59
 
61
- response = faraday_connection.put do |req|
62
- req.body = self.resource.adapter.serialize(attrs)
60
+ faraday_connection.put do |req|
61
+ req.body = resource.adapter.serialize(attrs)
63
62
  end
64
- response
65
63
  end
66
64
 
67
- def patch_response(attrs=nil)
68
- attrs ||= self.resource.attributes.changed_attributes
69
- attrs = (self.resource.default_attributes || {}).merge(attrs)
65
+ def patch_response(attrs = nil)
66
+ attrs ||= resource.attributes.changed_attributes
67
+ attrs = (resource.default_attributes || {}).merge(attrs)
70
68
 
71
69
  # adding this line to call outgoing_body_filter
72
70
  attrs = resource.outgoing_body_filter(attrs)
73
71
 
74
- response = faraday_connection.patch do |req|
75
- req.body = self.resource.adapter.serialize(attrs)
72
+ faraday_connection.patch do |req|
73
+ req.body = resource.adapter.serialize(attrs)
76
74
  end
77
- response
78
75
  end
79
76
  end
80
77
  end
81
78
 
82
79
  def default_headers
83
80
  {
84
- 'Content-Type' => 'application/json',
85
- 'Accept' => 'application/json'
81
+ "Content-Type" => "application/json",
82
+ "Accept" => "application/json"
86
83
  }
87
84
  end
88
85
 
89
86
  def api(options = {})
90
- opts = { root: cms_root, headers: default_headers }.merge(options)
91
- if !opts[:headers]['Authorization'] && account = opts.delete(:account)
87
+ opts = {root: cms_root, headers: default_headers}.merge(options)
88
+ if !opts[:headers]["Authorization"] && (account = opts.delete(:account))
92
89
  token = get_account_token(account, opts.delete(:scope))
93
- opts[:headers]['Authorization'] = "Bearer #{token}"
90
+ opts[:headers]["Authorization"] = "Bearer #{token}"
94
91
  end
95
92
 
96
93
  PRXHyperResource.new(opts)
97
94
  end
98
95
 
99
96
  def api_resource(body, root = cms_root)
100
- href = body['_links']['self']['href']
97
+ href = body["_links"]["self"]["href"]
101
98
  resource = api(root: root)
102
99
  link = PRXHyperResource::Link.new(resource, href: href)
103
100
  PRXHyperResource.new_from(body: body, resource: resource, link: link)
104
101
  end
105
102
 
106
103
  def get_account_token(account, scope = nil)
107
- id = ENV['PRX_CLIENT_ID']
108
- se = ENV['PRX_SECRET']
104
+ id = ENV["PRX_CLIENT_ID"]
105
+ se = ENV["PRX_SECRET"]
109
106
 
110
- raise 'Missing PRX_CLIENT_ID PRX_SECRET ENV vars' if id.nil? || se.nil?
111
- raise 'Missing ID_HOST ENV var' if ENV['ID_HOST'].nil?
107
+ raise "Missing PRX_CLIENT_ID PRX_SECRET ENV vars" if id.nil? || se.nil?
108
+ raise "Missing ID_HOST ENV var" if ENV["ID_HOST"].nil?
112
109
 
113
- oauth_options = { site: id_root, token_url: '/token' }
110
+ oauth_options = {site: id_root, token_url: "/token"}
114
111
  client = OAuth2::Client.new(id, se, oauth_options) do |faraday|
115
- faraday.request :url_encoded
116
- faraday.adapter :excon
112
+ faraday.request :url_encoded
113
+ faraday.adapter :excon
117
114
  end
118
115
  if scope
119
116
  client.client_credentials.get_token(account: account, scope: scope).token
@@ -123,25 +120,25 @@ module PRXAccess
123
120
  end
124
121
 
125
122
  def id_root
126
- root_uri ENV['ID_HOST']
123
+ root_uri ENV["ID_HOST"]
127
124
  end
128
125
 
129
126
  private
130
127
 
131
128
  def method_missing(method, *args)
132
- if method =~ /_root$/
133
- root_uri ENV[method.to_s.sub(/_root$/, '_HOST').upcase], '/api/v1'
129
+ if /_root$/.match?(method)
130
+ root_uri ENV[method.to_s.sub(/_root$/, "_HOST").upcase], "/api/v1"
134
131
  else
135
132
  super
136
133
  end
137
134
  end
138
135
 
139
136
  def respond_to_missing?(method, include_private = false)
140
- method.to_s.ends_with?('_root') || super
137
+ method.to_s.ends_with?("_root") || super
141
138
  end
142
139
 
143
- def root_uri(host, path = '')
144
- if host =~ /\.org|\.tech/
140
+ def root_uri(host, path = "")
141
+ if /\.org|\.tech/.match?(host)
145
142
  URI::HTTPS.build(host: host, path: path).to_s
146
143
  else
147
144
  URI::HTTP.build(host: host, path: path).to_s
@@ -1,3 +1,3 @@
1
1
  module PRXAccess
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
data/prx_access.gemspec CHANGED
@@ -3,14 +3,14 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require "prx_access/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "prx_access"
7
- spec.version = PRXAccess::VERSION
8
- spec.authors = ["Sam Vevang"]
9
- spec.email = ["sam.vevang@prx.org"]
6
+ spec.name = "prx_access"
7
+ spec.version = PRXAccess::VERSION
8
+ spec.authors = ["Sam Vevang"]
9
+ spec.email = ["sam.vevang@prx.org"]
10
10
 
11
- spec.summary = %q{PRX Access navigates HAL hypermedia resources on PRX services.}
12
- spec.description = %q{PRX Access is a gem to supply authentication headers and descend the HAL hypermedia link tree on PRX's APIs.}
13
- spec.homepage = "https://github.com/PRX/prx_access"
11
+ spec.summary = "PRX Access navigates HAL hypermedia resources on PRX services."
12
+ spec.description = "PRX Access is a gem to supply authentication headers and descend the HAL hypermedia link tree on PRX's APIs."
13
+ spec.homepage = "https://github.com/PRX/prx_access"
14
14
 
15
15
  if spec.respond_to?(:metadata)
16
16
  spec.metadata["homepage_uri"] = spec.homepage
@@ -22,21 +22,23 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  # Specify which files should be added to the gem when it is released.
24
24
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
25
+ spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
26
26
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
27
  end
28
- spec.bindir = "exe"
29
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.bindir = "exe"
29
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ["lib"]
31
31
 
32
32
  spec.add_dependency "hyperresource", "~> 0.9.4"
33
33
  spec.add_dependency "activesupport", ">= 4.0.0"
34
- spec.add_dependency "oauth2", "~> 1.4.1"
35
- spec.add_dependency "excon", "~> 0.62.0"
34
+ spec.add_dependency "oauth2", "~> 2.0", ">= 2.0.22"
35
+ spec.add_dependency "excon", ">= 1.5.0"
36
+ spec.add_dependency "faraday-excon"
36
37
 
37
38
  spec.add_development_dependency "webmock"
38
39
  spec.add_development_dependency "pry"
39
- spec.add_development_dependency "bundler", "~> 1.17"
40
- spec.add_development_dependency "rake", "~> 10.0"
40
+ spec.add_development_dependency "bundler", ">= 2.2.26"
41
+ spec.add_development_dependency "rake", "~> 13.0"
41
42
  spec.add_development_dependency "rspec", "~> 3.0"
43
+ spec.add_development_dependency "standard"
42
44
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prx_access
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Vevang
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2020-04-27 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: hyperresource
@@ -44,28 +43,48 @@ dependencies:
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: 1.4.1
46
+ version: '2.0'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 2.0.22
48
50
  type: :runtime
49
51
  prerelease: false
50
52
  version_requirements: !ruby/object:Gem::Requirement
51
53
  requirements:
52
54
  - - "~>"
53
55
  - !ruby/object:Gem::Version
54
- version: 1.4.1
56
+ version: '2.0'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 2.0.22
55
60
  - !ruby/object:Gem::Dependency
56
61
  name: excon
57
62
  requirement: !ruby/object:Gem::Requirement
58
63
  requirements:
59
- - - "~>"
64
+ - - ">="
60
65
  - !ruby/object:Gem::Version
61
- version: 0.62.0
66
+ version: 1.5.0
62
67
  type: :runtime
63
68
  prerelease: false
64
69
  version_requirements: !ruby/object:Gem::Requirement
65
70
  requirements:
66
- - - "~>"
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 1.5.0
74
+ - !ruby/object:Gem::Dependency
75
+ name: faraday-excon
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ type: :runtime
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
67
86
  - !ruby/object:Gem::Version
68
- version: 0.62.0
87
+ version: '0'
69
88
  - !ruby/object:Gem::Dependency
70
89
  name: webmock
71
90
  requirement: !ruby/object:Gem::Requirement
@@ -98,30 +117,30 @@ dependencies:
98
117
  name: bundler
99
118
  requirement: !ruby/object:Gem::Requirement
100
119
  requirements:
101
- - - "~>"
120
+ - - ">="
102
121
  - !ruby/object:Gem::Version
103
- version: '1.17'
122
+ version: 2.2.26
104
123
  type: :development
105
124
  prerelease: false
106
125
  version_requirements: !ruby/object:Gem::Requirement
107
126
  requirements:
108
- - - "~>"
127
+ - - ">="
109
128
  - !ruby/object:Gem::Version
110
- version: '1.17'
129
+ version: 2.2.26
111
130
  - !ruby/object:Gem::Dependency
112
131
  name: rake
113
132
  requirement: !ruby/object:Gem::Requirement
114
133
  requirements:
115
134
  - - "~>"
116
135
  - !ruby/object:Gem::Version
117
- version: '10.0'
136
+ version: '13.0'
118
137
  type: :development
119
138
  prerelease: false
120
139
  version_requirements: !ruby/object:Gem::Requirement
121
140
  requirements:
122
141
  - - "~>"
123
142
  - !ruby/object:Gem::Version
124
- version: '10.0'
143
+ version: '13.0'
125
144
  - !ruby/object:Gem::Dependency
126
145
  name: rspec
127
146
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +155,20 @@ dependencies:
136
155
  - - "~>"
137
156
  - !ruby/object:Gem::Version
138
157
  version: '3.0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: standard
160
+ requirement: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
139
172
  description: PRX Access is a gem to supply authentication headers and descend the
140
173
  HAL hypermedia link tree on PRX's APIs.
141
174
  email:
@@ -144,9 +177,13 @@ executables: []
144
177
  extensions: []
145
178
  extra_rdoc_files: []
146
179
  files:
180
+ - ".git-blame-ignore-revs"
181
+ - ".github/workflows/lint.yml"
182
+ - ".github/workflows/test.yml"
147
183
  - ".gitignore"
148
184
  - ".rspec"
149
- - ".travis.yml"
185
+ - ".standard.yml"
186
+ - ".tool-versions"
150
187
  - CODE_OF_CONDUCT.md
151
188
  - Gemfile
152
189
  - LICENSE
@@ -163,7 +200,6 @@ licenses: []
163
200
  metadata:
164
201
  homepage_uri: https://github.com/PRX/prx_access
165
202
  source_code_uri: https://github.com/PRX/prx_access
166
- post_install_message:
167
203
  rdoc_options: []
168
204
  require_paths:
169
205
  - lib
@@ -178,8 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
178
214
  - !ruby/object:Gem::Version
179
215
  version: '0'
180
216
  requirements: []
181
- rubygems_version: 3.0.1
182
- signing_key:
217
+ rubygems_version: 4.0.3
183
218
  specification_version: 4
184
219
  summary: PRX Access navigates HAL hypermedia resources on PRX services.
185
220
  test_files: []
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.5.3
7
- before_install: gem install bundler -v 1.17.2