pdc 0.1.4 → 0.1.5

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.pronto.yml +13 -0
  3. data/.rubocop.yml +23 -0
  4. data/.travis.yml +13 -2
  5. data/Gemfile +16 -10
  6. data/Rakefile +4 -4
  7. data/bin/console +5 -5
  8. data/examples/logger.rb +14 -12
  9. data/examples/pdc_curb_access_token.rb +1 -1
  10. data/examples/pdc_release_rpm_mapping.rb +16 -0
  11. data/examples/pdc_resource_tests.rb +22 -0
  12. data/examples/pdc_test_cache.rb +9 -8
  13. data/examples/prod_failures.rb +1 -1
  14. data/examples/prod_pdc.rb +1 -1
  15. data/lib/pdc/base.rb +2 -2
  16. data/lib/pdc/config.rb +49 -49
  17. data/lib/pdc/http/request/append_slash.rb +1 -1
  18. data/lib/pdc/http/request/pdc_token.rb +5 -6
  19. data/lib/pdc/http/request/token_fetcher.rb +0 -1
  20. data/lib/pdc/http/response/pagination.rb +4 -5
  21. data/lib/pdc/http/response/parser.rb +6 -6
  22. data/lib/pdc/resource/attribute_store.rb +5 -9
  23. data/lib/pdc/resource/attributes.rb +22 -25
  24. data/lib/pdc/resource/identity.rb +7 -6
  25. data/lib/pdc/resource/path.rb +2 -4
  26. data/lib/pdc/resource/per_thread_registry.rb +10 -8
  27. data/lib/pdc/resource/relation/finder.rb +1 -1
  28. data/lib/pdc/resource/relation/pagination.rb +1 -1
  29. data/lib/pdc/resource/relation/query.rb +0 -1
  30. data/lib/pdc/resource/relation.rb +14 -13
  31. data/lib/pdc/resource/rest_api.rb +2 -3
  32. data/lib/pdc/resource/value_parser.rb +5 -6
  33. data/lib/pdc/v1/product.rb +0 -1
  34. data/lib/pdc/v1/release.rb +1 -1
  35. data/lib/pdc/v1/release_rpm_mapping.rb +9 -0
  36. data/lib/pdc/v1/release_variant.rb +1 -2
  37. data/lib/pdc/v1.rb +1 -0
  38. data/lib/pdc/version.rb +1 -1
  39. data/spec/fixtures/vcr/must_has_compose.yml +47 -0
  40. data/spec/pdc/config_spec.rb +2 -2
  41. data/spec/pdc/resource/attributes_spec.rb +46 -46
  42. data/spec/pdc/resource/cache_spec.rb +0 -1
  43. data/spec/pdc/resource/count_spec.rb +2 -2
  44. data/spec/pdc/resource/identity_spec.rb +0 -1
  45. data/spec/pdc/resource/pagination_spec.rb +3 -3
  46. data/spec/pdc/resource/path_spec.rb +10 -5
  47. data/spec/pdc/resource/relation_spec.rb +2 -3
  48. data/spec/pdc/v1/arch_spec.rb +1 -1
  49. data/spec/pdc/v1/release_rpm_mapping_spec.rb +16 -0
  50. data/spec/pdc/v1/release_spec.rb +2 -2
  51. data/spec/spec_helper.rb +4 -4
  52. data/spec/support/fixtures.rb +2 -4
  53. data/spec/support/vcr.rb +1 -1
  54. data/spec/support/webmock.rb +1 -3
  55. metadata +10 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 92f8058cc0be41a5a3c04adfa2746b6e5220a2c7
4
- data.tar.gz: 80cc4a9ccab91400ac9b24cb423ee817489ed4eb
3
+ metadata.gz: 5a63a931b11dc86a0902d4632e3a6cdfc8ac3812
4
+ data.tar.gz: 18be45c56ab85aeb2ebced876758df49052fdb32
5
5
  SHA512:
6
- metadata.gz: 7775dc341f3444c9aec9e233d406c44da542ea4e6646764020e461d78ea974dae1c8b8f45fe2c54ff1f760642360d7ba16d3ef271894c3e8d81ff86825fcb599
7
- data.tar.gz: bafeac858e978afbde52515f7d0011806598d334f92e658c29c6d19a4b6445fddfc3b94624f430ee0797280fac688dc2f0a3363f902849b6922a38d3b5a884fe
6
+ metadata.gz: 28df5bd5f63bef0af4d6122df37f3552df06ccb4bf108283f5396224fb1746e3c62a500d145bcfc3b38a16371e9394043e55a788f5af9be3b77daa23953d4ff1
7
+ data.tar.gz: 0e316110d183aab7b67357816124daa0b825b5b9d35fd56abf43093972607b4e1c066c85c89d5acd5afff6f7d8c09a108cf2d462a769c90fe5908cfd43e31aa8
data/.pronto.yml ADDED
@@ -0,0 +1,13 @@
1
+ all:
2
+ exclude:
3
+ - 'spec/**/*'
4
+ # exclude files for single runner
5
+ eslint:
6
+ exclude:
7
+ - 'app/assets/**/*'
8
+ github:
9
+ slug: product-definition-center/pdc-ruby-gem
10
+ api_endpoint: https://api.github.com/
11
+ web_endpoint: https://github.com/
12
+ max_warnings: 150
13
+ verbose: false
data/.rubocop.yml ADDED
@@ -0,0 +1,23 @@
1
+ AllCops:
2
+ DisplayCopNames: true
3
+ DisplayStyleGuide: true
4
+
5
+ Exclude:
6
+ - spec/**/*
7
+
8
+ Style/Documentation:
9
+ Enabled: false
10
+
11
+ Style/ClassAndModuleChildren:
12
+ Enabled: false
13
+ EnforcedStyle: compact
14
+
15
+ Metrics/LineLength:
16
+ Max: 100
17
+
18
+ Metrics/MethodLength:
19
+ Max: 25
20
+
21
+ Metrics/AbcSize:
22
+ Max: 25
23
+
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
+ cache: bundler
2
3
  rvm:
3
4
  - 2.2.2
4
5
  addons:
@@ -8,14 +9,24 @@ addons:
8
9
  before_install: gem install bundler -v 1.11.2
9
10
  install:
10
11
  - bundle install --jobs=3 --retry=4
11
- - gem install coveralls
12
12
  - git config --global user.name "Travis CI"
13
13
  - git config --global user.email "pdc@product-definition-center.com"
14
14
  - export REPO_URL_GITHUB="https://$GH_TOKEN@github.com/$GH_REPO.git"
15
+ - export GITHUB_ACCESS_TOKEN=$GH_TOKEN
15
16
  script:
16
17
  - bundle exec rake test
17
- - if [ "$TRAVIS_BRANCH" = "master" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then make deploy_doc; fi
18
+ - >
19
+ if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
20
+ bundle exec pronto run -f github_pr -c origin/${TRAVIS_BRANCH}
21
+ fi
22
+
23
+ after_success:
24
+ - >
25
+ [ "$TRAVIS_BRANCH" = "master" ] &&
26
+ [ "$TRAVIS_PULL_REQUEST" = "false" ] &&
27
+ make deploy_doc
18
28
  env:
19
29
  global:
20
30
  - GH_REPO="product-definition-center/pdc-ruby-gem"
31
+ - PULL_REQUEST_ID=${TRAVIS_PULL_REQUEST}
21
32
  - secure: Mf6k7ZwdsOOzP4woIo9z3X8e8hYZUOitBYPVOBeWpXPY8rruet3DhRYAEMNqf8iH9YAVqssE4Q0j76PQrQ6WyX+TXnayl62VAGeRjwQt4rs3orDjN+lZSP1tMt8w5fN906XeV2pcbuahRU1cFEEJ6iWhTbvhvgugsmuo8dzoS5uLRtv+VopyZjJaOqvsk5wCPKMKQLAqCvYDf2ugCm2qI3+FdjQb24WaTMLmF+vVXQSGvOpXx8Z6gLZRk0/bZeBLxFLFJcAFnRdbC09YI8Jt5nmwg7Lc+mX19qGUmracsYz2KKTDg3XC2b4n4O63woQFdwwvj0LQIoLmc/6YoxIPuCDQ92oXVCDGHB9kTh3GPxHPVwWsveg8Auvj0cPMSOTZId46Jox8sOXlIxZD0xXHiq8XQ1WSYJm0LJheO9mZHV4DIHp0o0Zm7ii7cxkb2It0c2oACRpiyBmXPfGKwNoMgfAzPo4dbbmbqoRD6XxxzLxKNwhKOAtcBMs6j/dKlKyo12h79+yqlkcYmvOLp+Bz/NqRRN63j1h5wR2Irl95uLv2PN26k2sod+Kmk22IcmDJP80ha/IodcxmPIDTZKnqLd7bcaK3mHvZMQ1DsKeuktaqKvnK8fdaZHAhVSfUlu0yCi5PfiH28+HbdpSK6VHQhH7c9/YgwrS9sgcE0Kh1Mw0=
data/Gemfile CHANGED
@@ -1,31 +1,37 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :tools do
4
- gem 'rubocop'
5
4
  gem 'guard', '<= 2.12.0'
6
5
  gem 'guard-minitest', '~> 2.4.4'
7
6
  gem 'guard-shell'
8
7
  end
9
8
 
10
9
  group :development do
11
- gem 'rake', '~> 10.0'
12
- gem 'rake-notes'
13
- gem 'colorize'
14
10
  gem 'awesome_print'
11
+ gem 'colorize'
15
12
  gem 'pry'
16
13
  gem 'pry-byebug'
14
+ gem 'rake', '~> 10.0'
15
+ gem 'rake-notes'
17
16
  end
18
17
 
19
18
  group :test do
20
- gem 'mocha'
21
- gem 'webmock', '~> 1.18.0'
22
- gem 'minitest-reporters', '~> 1.1.9'
23
- gem 'minitest-focus'
24
- gem 'simplecov'
25
19
  gem 'coveralls'
20
+ gem 'minitest-focus'
21
+ gem 'minitest-reporters', '~> 1.1.9'
22
+ gem 'mocha'
26
23
  gem 'rack', '~> 1.4.7'
27
- gem 'vcr'
24
+ gem 'simplecov'
28
25
  gem 'timecop'
26
+ gem 'vcr'
27
+ gem 'webmock', '~> 1.18.0'
28
+ end
29
+
30
+ group :development, :test do
31
+ # Pronto
32
+ gem 'pronto'
33
+ gem 'pronto-flay', require: false
34
+ gem 'pronto-rubocop', require: false
29
35
  end
30
36
 
31
37
  # Specify your gem's dependencies in pdc-ruby.gemspec
data/Rakefile CHANGED
@@ -1,10 +1,10 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
3
  require 'rake/notes/rake_task'
4
4
 
5
5
  Rake::TestTask.new(:test) do |t|
6
- t.libs << "spec"
7
- t.libs << "lib"
6
+ t.libs << 'spec'
7
+ t.libs << 'lib'
8
8
  t.test_files = FileList['spec/**/*_spec.rb']
9
9
  end
10
10
 
data/bin/console CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "pry"
5
- require "ap"
3
+ require 'bundler/setup'
4
+ require 'pry'
5
+ require 'ap'
6
6
 
7
- require "pdc"
8
- require_relative "../spec/support/fixtures"
7
+ require 'pdc'
8
+ require_relative '../spec/support/fixtures'
9
9
 
10
10
  include Fixtures
11
11
  Pry.start
data/examples/logger.rb CHANGED
@@ -1,15 +1,19 @@
1
1
  require_relative '../lib/pdc'
2
2
  require 'ap'
3
3
 
4
+ # :nodoc:
4
5
  class FakeLogger
5
6
  attr_accessor :level
6
7
 
7
8
  def debug(*args)
8
9
  end
10
+
9
11
  def info(*args)
10
12
  end
13
+
11
14
  def warn(*args)
12
15
  end
16
+
13
17
  def fatal(*args)
14
18
  end
15
19
 
@@ -17,22 +21,21 @@ class FakeLogger
17
21
  end
18
22
  end
19
23
 
20
- #PDC.logger = FakeLogger.new
21
-
24
+ # PDC.logger = FakeLogger.new
22
25
 
23
26
  logger = PDC.logger
24
27
 
25
- logger.debug("Debug will be logged")
26
- logger.info("Info will be logged as well")
28
+ logger.debug('Debug will be logged')
29
+ logger.info('Info will be logged as well')
27
30
 
28
31
  logger.level = Logger::WARN
29
32
 
30
- logger.debug("Created logger") # won't be logged
31
- logger.info("Program started") # won't be logged
32
- logger.warn("Nothing to do!")
33
- logger.error("Error something really went wrong")
33
+ logger.debug('Created logger') # won't be logged
34
+ logger.info('Program started') # won't be logged
35
+ logger.warn('Nothing to do!')
36
+ logger.error('Error something really went wrong')
34
37
 
35
- path = "a_non_existent_file"
38
+ path = 'a_non_existent_file'
36
39
 
37
40
  begin
38
41
  File.foreach(path) do |line|
@@ -41,10 +44,9 @@ begin
41
44
  end
42
45
  end
43
46
  rescue => err
44
- logger.fatal("Caught exception; exiting")
47
+ logger.fatal('Caught exception; exiting')
45
48
  logger.fatal(err)
46
49
  end
47
50
 
48
51
  logger.level = Logger::INFO
49
- logger.info("will continue here")
50
-
52
+ logger.info('will continue here')
@@ -7,7 +7,7 @@ def obtain_token
7
7
  url = PDC.config.site + PDC.config.rest_api_path + '/' + PDC.config.token_obtain_path
8
8
 
9
9
  c = Curl::Easy.new(url) do |request|
10
- request.headers["Accept"] = "application/json"
10
+ request.headers['Accept'] = 'application/json'
11
11
  request.http_auth_types = :gssnegotiate
12
12
 
13
13
  # The curl man page (http://curl.haxx.se/docs/manpage.html) specifes
@@ -0,0 +1,16 @@
1
+ require './lib/pdc'
2
+
3
+ def main
4
+ PDC.configure do |config|
5
+ config.site = 'https://pdc.engineering.redhat.com'
6
+ config.log_level = :debug
7
+ config.disable_caching = true
8
+ end
9
+
10
+ mapping = PDC::V1::ReleaseRpmMapping.where(
11
+ release_id: 'ceph-2.1-updates@rhel-7', package: 'ceph'
12
+ ).first
13
+ puts mapping.mapping
14
+ end
15
+
16
+ main if __FILE__ == $PROGRAM_NAME
@@ -171,3 +171,25 @@ describe PDC::V1::ReleaseVariant do
171
171
  end
172
172
  end
173
173
  end
174
+
175
+ # using prod server to test PDC::V1::ReleaseRpmMapping
176
+ pdc = server[:prod]
177
+
178
+ PDC.configure do |config|
179
+ config.site = pdc[:site]
180
+ auth_token = pdc[:token]
181
+ config.token = pdc[:token].call if auth_token
182
+ config.requires_token = auth_token.present? # to_bool
183
+ end
184
+
185
+ describe PDC::V1::ReleaseRpmMapping do
186
+ let(:mapping) do
187
+ PDC::V1::ReleaseRpmMapping.where(
188
+ release_id: 'ceph-2.1-updates@rhel-7',
189
+ package: 'ceph'
190
+ ).first
191
+ end
192
+ it 'must has compose' do
193
+ mapping.mapping.must_be_instance_of OpenStruct
194
+ end
195
+ end
@@ -7,17 +7,18 @@ PDC.configure do |config|
7
7
  # dev server
8
8
  config.site = 'https://pdc.host.dev.eng.pek2.redhat.com/'
9
9
  config.cache_store = ActiveSupport::Cache.lookup_store(
10
- :file_store, [File.join(ENV['TMPDIR'] || '/tmp', 'cache')])
10
+ :file_store, [File.join(ENV['TMPDIR'] || '/tmp', 'cache')]
11
+ )
11
12
  config.log_level = :info
12
13
  end
13
14
 
14
- ActiveSupport::Notifications.subscribe "http_cache.faraday" do |*args|
15
+ ActiveSupport::Notifications.subscribe 'http_cache.faraday' do |*args|
15
16
  event = ActiveSupport::Notifications::Event.new(*args)
16
- puts " >>> " + "cache: #{event.payload[:cache_status]}"
17
+ puts ' >>> ' + "cache: #{event.payload[:cache_status]}"
17
18
  ap event.payload
18
19
  end
19
20
 
20
- def benchmark(description, opts = {}, &block)
21
+ def benchmark(description, _opts = {}, &block)
21
22
  puts "Running: #{description}"
22
23
 
23
24
  initial = Benchmark.measure(&block)
@@ -28,19 +29,19 @@ def benchmark(description, opts = {}, &block)
28
29
  end
29
30
 
30
31
  def main
31
- benchmark "fetch all" do
32
+ benchmark 'fetch all' do
32
33
  PDC::V1::Release.all
33
34
  end
34
35
 
35
- benchmark "fetch with page number" do
36
+ benchmark 'fetch with page number' do
36
37
  PDC::V1::Release.page(2).contents!
37
38
  end
38
39
 
39
- benchmark "fetch with page number and size" do
40
+ benchmark 'fetch with page number and size' do
40
41
  PDC::V1::Release.page(2).page_size(30).contents!
41
42
  end
42
43
 
43
- benchmark "fetch with page number and size and query condition" do
44
+ benchmark 'fetch with page number and size and query condition' do
44
45
  PDC::V1::Release.page(2).page_size(30).where(active: true).contents!
45
46
  end
46
47
  end
@@ -23,4 +23,4 @@ def main
23
23
  end
24
24
  end
25
25
 
26
- main if __FILE__ == $0
26
+ main if __FILE__ == $PROGRAM_NAME
data/examples/prod_pdc.rb CHANGED
@@ -11,4 +11,4 @@ def main
11
11
  ap releases
12
12
  end
13
13
 
14
- main if __FILE__ == $0
14
+ main if __FILE__ == $PROGRAM_NAME
data/lib/pdc/base.rb CHANGED
@@ -8,7 +8,7 @@ module PDC
8
8
  include PDC::Resource::Scopes
9
9
  include PDC::Resource::RestApi
10
10
 
11
- scope :page, ->(value) { where(:page => value) }
12
- scope :page_size, ->(value) { where(:page_size => value) }
11
+ scope :page, ->(value) { where(page: value) }
12
+ scope :page_size, ->(value) { where(page_size: value) }
13
13
  end
14
14
  end
data/lib/pdc/config.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'faraday-http-cache'
2
2
  require 'pdc/http/request/token_fetcher'
3
3
 
4
+ # rubocop:disable ModuleLength
4
5
  module PDC
5
6
  # This class is the main access point for all PDC::Resource instances.
6
7
  #
@@ -34,7 +35,7 @@ module PDC
34
35
  :logger,
35
36
 
36
37
  :cache_store,
37
- :disable_caching,
38
+ :disable_caching
38
39
  ) do
39
40
  def initialize
40
41
  # site config
@@ -93,61 +94,60 @@ module PDC
93
94
 
94
95
  private
95
96
 
96
- def apply_config
97
- reset_logger
98
- reset_token_fetcher
99
- reset_base_connection
100
- end
97
+ def apply_config
98
+ reset_logger
99
+ reset_token_fetcher
100
+ reset_base_connection
101
+ end
101
102
 
102
- def reset_logger
103
- PDC.logger = Logger.new(nil) unless config.enable_logging
104
- logger.level = Logger.const_get(config.log_level.upcase)
105
- end
103
+ def reset_logger
104
+ PDC.logger = Logger.new(nil) unless config.enable_logging
105
+ logger.level = Logger.const_get(config.log_level.upcase)
106
+ end
106
107
 
107
- def reset_token_fetcher
108
- Request::TokenFetcher.configure do |c|
109
- c.url = token_url
110
- c.ssl_verify_mode = config.ssl_verify_mode
111
- end
108
+ def reset_token_fetcher
109
+ Request::TokenFetcher.configure do |c|
110
+ c.url = token_url
111
+ c.ssl_verify_mode = config.ssl_verify_mode
112
112
  end
113
+ end
113
114
 
114
- # resets and returns the +Faraday+ +connection+ object
115
- def reset_base_connection
116
-
117
- faraday_config = {
118
- url: api_url,
119
- headers: PDC::Request.default_headers,
120
- ssl: ssl_config
121
- }
122
-
123
- PDC::Base.connection = Faraday.new(faraday_config) do |c|
124
- c.request :append_slash_to_path
125
- c.request :pdc_token, token: config.token if config.requires_token
126
-
127
- c.response :logger, config.logger
128
- c.response :pdc_paginator
129
- c.response :pdc_json_parser
130
- c.response :raise_error
131
- c.response :pdc_raise_error
132
-
133
- c.use FaradayMiddleware::FollowRedirects
134
-
135
- unless config.disable_caching
136
- c.use Faraday::HttpCache, store: cache_store,
137
- logger: PDC.logger,
138
- instrumenter: ActiveSupport::Notifications
139
- end
140
- c.adapter Faraday.default_adapter
115
+ # resets and returns the +Faraday+ +connection+ object
116
+ # rubocop:disable AbcSize
117
+ def reset_base_connection
118
+ faraday_config = {
119
+ url: api_url,
120
+ headers: PDC::Request.default_headers,
121
+ ssl: ssl_config
122
+ }
123
+
124
+ PDC::Base.connection = Faraday.new(faraday_config) do |c|
125
+ c.request :append_slash_to_path
126
+ c.request :pdc_token, token: config.token if config.requires_token
127
+
128
+ c.response :logger, config.logger
129
+ c.response :pdc_paginator
130
+ c.response :pdc_json_parser
131
+ c.response :raise_error
132
+ c.response :pdc_raise_error
133
+
134
+ c.use FaradayMiddleware::FollowRedirects
135
+
136
+ unless config.disable_caching
137
+ c.use Faraday::HttpCache, store: cache_store,
138
+ logger: PDC.logger,
139
+ instrumenter: ActiveSupport::Notifications
141
140
  end
141
+ c.adapter Faraday.default_adapter
142
142
  end
143
+ end
143
144
 
144
- def ssl_config
145
- { verify: config.ssl_verify_mode == OpenSSL::SSL::VERIFY_PEER }
146
- end
147
-
148
- def cache_store
149
- config.cache_store || ActiveSupport::Cache.lookup_store(:memory_store)
150
- end
145
+ def ssl_config
146
+ { verify: config.ssl_verify_mode == OpenSSL::SSL::VERIFY_PEER }
147
+ end
151
148
 
149
+ def cache_store
150
+ config.cache_store || ActiveSupport::Cache.lookup_store(:memory_store)
151
+ end
152
152
  end
153
153
  end
@@ -2,7 +2,7 @@ module PDC
2
2
  class Request::AppendSlashToPath < Faraday::Middleware
3
3
  include PDC::Logging
4
4
 
5
- Faraday::Request.register_middleware :append_slash_to_path => self
5
+ Faraday::Request.register_middleware append_slash_to_path: self
6
6
 
7
7
  def call(env)
8
8
  logger.debug "\n..... append slash .........................................."
@@ -1,5 +1,4 @@
1
1
  module PDC::Request
2
-
3
2
  # Adds TokenAuthentication to request header. Uses the token if passed
4
3
  # else fetches token using the TokenFetcher to get the token once
5
4
  class Token < Faraday::Middleware
@@ -20,11 +19,11 @@ module PDC::Request
20
19
 
21
20
  private
22
21
 
23
- attr_reader :options
22
+ attr_reader :options
24
23
 
25
- # uses the token passed or fetches one only once
26
- def token
27
- @token ||= options[:token] || TokenFetcher.fetch
28
- end
24
+ # uses the token passed or fetches one only once
25
+ def token
26
+ @token ||= options[:token] || TokenFetcher.fetch
27
+ end
29
28
  end
30
29
  end
@@ -3,7 +3,6 @@ require 'json'
3
3
 
4
4
  module PDC::Request
5
5
  module TokenFetcher
6
-
7
6
  module Configuration
8
7
  VALID_KEYS = [:ssl_verify_mode, :url].freeze
9
8
 
@@ -2,7 +2,7 @@ module PDC::Response
2
2
  class Paginator < Faraday::Response::Middleware
3
3
  include PDC::Logging
4
4
 
5
- Faraday::Response.register_middleware :pdc_paginator => self
5
+ Faraday::Response.register_middleware pdc_paginator: self
6
6
 
7
7
  def parse(json)
8
8
  logger.debug "\n.....paginate json ....................................."
@@ -18,7 +18,7 @@ module PDC::Response
18
18
  # schema://host:port/ of the next and previous
19
19
 
20
20
  next_page: request_uri(metadata.delete(:next)),
21
- previous_page: request_uri(metadata.delete(:previous)),
21
+ previous_page: request_uri(metadata.delete(:previous))
22
22
  }
23
23
 
24
24
  logger.debug '... after parsing pagination data:'
@@ -35,9 +35,8 @@ module PDC::Response
35
35
 
36
36
  def paginated?(metadata)
37
37
  metadata[:count].is_a?(Numeric) &&
38
- metadata.key?(:next) &&
39
- metadata.key?(:previous)
38
+ metadata.key?(:next) &&
39
+ metadata.key?(:previous)
40
40
  end
41
-
42
41
  end
43
42
  end
@@ -5,20 +5,20 @@ module PDC::Response
5
5
  class Parser < Faraday::Response::Middleware
6
6
  include PDC::Logging
7
7
 
8
- Faraday::Response.register_middleware :pdc_json_parser => self
8
+ Faraday::Response.register_middleware pdc_json_parser: self
9
9
 
10
10
  def parse(body)
11
11
  logger.debug "\n.....parse to json ....................................."
12
12
  logger.debug self.class
13
13
 
14
- logger.debug '... parsing' + body.to_s.truncate(55)
14
+ logger.debug '... parsing' + body.to_s.truncate(55)
15
15
  begin
16
16
  json = MultiJson.load(body, symbolize_keys: true)
17
17
  rescue MultiJson::ParseError => e
18
18
  raise PDC::JsonParseError, e
19
19
  end
20
20
 
21
- res = {
21
+ {
22
22
  data: extract_data(json), # Always an Array
23
23
  errors: extract_errors(json), #
24
24
  metadata: extract_metadata(json) # a hash
@@ -29,7 +29,7 @@ module PDC::Response
29
29
 
30
30
  def extract_data(json)
31
31
  return [] if error?(json)
32
- return json[:results] if has_metadata?(json)
32
+ return json[:results] if metadata_present?(json)
33
33
  Array.wrap(json)
34
34
  end
35
35
 
@@ -38,11 +38,11 @@ module PDC::Response
38
38
  end
39
39
 
40
40
  def extract_metadata(json)
41
- return json.except(:details, :results) if has_metadata?(json)
41
+ return json.except(:details, :results) if metadata_present?(json)
42
42
  data_only?(json) ? { count: json.length, next: nil, previous: nil } : {}
43
43
  end
44
44
 
45
- def has_metadata?(json)
45
+ def metadata_present?(json)
46
46
  return false if data_only?(json) || error?(json)
47
47
 
48
48
  json[:results].is_a?(Array) &&
@@ -8,15 +8,11 @@ module PDC::Resource
8
8
 
9
9
  private
10
10
 
11
- def parse_value(value)
12
-
13
- case
14
- when value.is_a?(PDC::Base) then value.attributes.to_params
15
- when value.is_a?(Array) then value.map { |v| parse_value(v) }
16
- else value
17
- end
11
+ def parse_value(value)
12
+ if value.is_a?(PDC::Base) then value.attributes.to_params
13
+ elsif value.is_a?(Array) then value.map { |v| parse_value(v) }
14
+ else value
18
15
  end
19
-
16
+ end
20
17
  end
21
18
  end
22
-