my_api_client 0.14.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +99 -53
  3. data/.dependabot/config.yml +19 -1
  4. data/.rubocop.yml +5 -1
  5. data/.rubocop_challenge.yml +5 -0
  6. data/.rubocop_todo.yml +53 -1
  7. data/CHANGELOG.md +192 -0
  8. data/Gemfile +0 -3
  9. data/Gemfile.lock +60 -56
  10. data/README.jp.md +159 -24
  11. data/bin/console +4 -0
  12. data/example/api_clients/application_api_client.rb +2 -10
  13. data/example/api_clients/my_pagination_api_client.rb +18 -0
  14. data/example/api_clients/my_rest_api_client.rb +9 -3
  15. data/lib/generators/rails/USAGE +1 -1
  16. data/lib/generators/rails/api_client_generator.rb +6 -0
  17. data/lib/generators/rails/templates/api_client.rb.erb +1 -1
  18. data/lib/generators/rails/templates/application_api_client.rb.erb +0 -11
  19. data/lib/generators/rspec/USAGE +1 -1
  20. data/lib/generators/rspec/api_client_generator.rb +6 -0
  21. data/lib/generators/rspec/templates/api_client_spec.rb.erb +23 -16
  22. data/lib/my_api_client.rb +7 -0
  23. data/lib/my_api_client/base.rb +4 -2
  24. data/lib/my_api_client/default_error_handlers.rb +64 -0
  25. data/lib/my_api_client/error_handling.rb +6 -6
  26. data/lib/my_api_client/error_handling/generator.rb +23 -7
  27. data/lib/my_api_client/errors.rb +1 -53
  28. data/lib/my_api_client/errors/api_limit_error.rb +6 -0
  29. data/lib/my_api_client/errors/client_error.rb +93 -0
  30. data/lib/my_api_client/errors/network_error.rb +43 -0
  31. data/lib/my_api_client/errors/server_error.rb +42 -0
  32. data/lib/my_api_client/params/params.rb +1 -3
  33. data/lib/my_api_client/request.rb +29 -34
  34. data/lib/my_api_client/request/basic.rb +32 -0
  35. data/lib/my_api_client/request/executor.rb +1 -1
  36. data/lib/my_api_client/request/pagination.rb +39 -0
  37. data/lib/my_api_client/version.rb +1 -1
  38. data/my_api/.ruby-version +1 -1
  39. data/my_api/Gemfile.lock +86 -86
  40. data/my_api/README.md +6 -0
  41. data/my_api/app/controllers/pagination_controller.rb +58 -0
  42. data/my_api/config/routes.rb +1 -0
  43. data/my_api/spec/controllers/pagination_controller_spec.rb +73 -0
  44. data/my_api/spec/controllers/rest_controller_spec.rb +23 -5
  45. data/my_api/spec/spec_helper.rb +5 -0
  46. data/my_api_client.gemspec +2 -2
  47. data/rails_app/rails_5.2/.rspec +3 -0
  48. data/rails_app/rails_5.2/Gemfile +17 -0
  49. data/rails_app/rails_5.2/Gemfile.lock +171 -0
  50. data/rails_app/rails_5.2/README.md +24 -0
  51. data/rails_app/rails_5.2/Rakefile +8 -0
  52. data/rails_app/rails_5.2/app/controllers/application_controller.rb +4 -0
  53. data/rails_app/rails_5.2/app/jobs/application_job.rb +4 -0
  54. data/rails_app/rails_5.2/bin/bundle +5 -0
  55. data/rails_app/rails_5.2/bin/rails +6 -0
  56. data/rails_app/rails_5.2/bin/rake +6 -0
  57. data/rails_app/rails_5.2/bin/setup +27 -0
  58. data/rails_app/rails_5.2/bin/update +27 -0
  59. data/rails_app/rails_5.2/config.ru +7 -0
  60. data/rails_app/rails_5.2/config/application.rb +37 -0
  61. data/rails_app/rails_5.2/config/boot.rb +6 -0
  62. data/rails_app/rails_5.2/config/credentials.yml.enc +1 -0
  63. data/rails_app/rails_5.2/config/environment.rb +7 -0
  64. data/rails_app/rails_5.2/config/environments/development.rb +41 -0
  65. data/rails_app/rails_5.2/config/environments/production.rb +70 -0
  66. data/rails_app/rails_5.2/config/environments/test.rb +38 -0
  67. data/rails_app/rails_5.2/config/initializers/application_controller_renderer.rb +9 -0
  68. data/rails_app/rails_5.2/config/initializers/backtrace_silencers.rb +8 -0
  69. data/rails_app/rails_5.2/config/initializers/cors.rb +17 -0
  70. data/rails_app/rails_5.2/config/initializers/filter_parameter_logging.rb +6 -0
  71. data/rails_app/rails_5.2/config/initializers/inflections.rb +17 -0
  72. data/rails_app/rails_5.2/config/initializers/mime_types.rb +5 -0
  73. data/rails_app/rails_5.2/config/initializers/wrap_parameters.rb +11 -0
  74. data/rails_app/rails_5.2/config/locales/en.yml +33 -0
  75. data/rails_app/rails_5.2/config/routes.rb +5 -0
  76. data/rails_app/rails_5.2/config/spring.rb +8 -0
  77. data/rails_app/rails_5.2/public/robots.txt +1 -0
  78. data/rails_app/rails_5.2/spec/rails_helper.rb +14 -0
  79. data/rails_app/rails_5.2/spec/spec_helper.rb +13 -0
  80. data/rails_app/rails_6.0/.rspec +3 -0
  81. data/rails_app/rails_6.0/Gemfile +17 -0
  82. data/rails_app/rails_6.0/Gemfile.lock +186 -0
  83. data/rails_app/rails_6.0/README.md +24 -0
  84. data/rails_app/rails_6.0/Rakefile +8 -0
  85. data/rails_app/rails_6.0/app/controllers/application_controller.rb +4 -0
  86. data/rails_app/rails_6.0/app/jobs/application_job.rb +9 -0
  87. data/rails_app/rails_6.0/bin/rails +6 -0
  88. data/rails_app/rails_6.0/bin/rake +6 -0
  89. data/rails_app/rails_6.0/bin/setup +27 -0
  90. data/rails_app/rails_6.0/config.ru +7 -0
  91. data/rails_app/rails_6.0/config/application.rb +39 -0
  92. data/rails_app/rails_6.0/config/boot.rb +6 -0
  93. data/rails_app/rails_6.0/config/credentials.yml.enc +1 -0
  94. data/rails_app/rails_6.0/config/environment.rb +7 -0
  95. data/rails_app/rails_6.0/config/environments/development.rb +39 -0
  96. data/rails_app/rails_6.0/config/environments/production.rb +90 -0
  97. data/rails_app/rails_6.0/config/environments/test.rb +41 -0
  98. data/rails_app/rails_6.0/config/initializers/application_controller_renderer.rb +9 -0
  99. data/rails_app/rails_6.0/config/initializers/backtrace_silencers.rb +8 -0
  100. data/rails_app/rails_6.0/config/initializers/cors.rb +17 -0
  101. data/rails_app/rails_6.0/config/initializers/filter_parameter_logging.rb +6 -0
  102. data/rails_app/rails_6.0/config/initializers/inflections.rb +17 -0
  103. data/rails_app/rails_6.0/config/initializers/mime_types.rb +5 -0
  104. data/rails_app/rails_6.0/config/initializers/wrap_parameters.rb +11 -0
  105. data/rails_app/rails_6.0/config/locales/en.yml +33 -0
  106. data/rails_app/rails_6.0/config/routes.rb +5 -0
  107. data/rails_app/rails_6.0/config/spring.rb +8 -0
  108. data/rails_app/rails_6.0/public/robots.txt +1 -0
  109. data/rails_app/rails_6.0/spec/rails_helper.rb +14 -0
  110. data/rails_app/rails_6.0/spec/spec_helper.rb +13 -0
  111. metadata +81 -8
  112. data/gemfiles/rails_4.2.gemfile +0 -15
  113. data/renovate.json +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f0b010bd5bb4ef7d0b3a99c826fefc67bedf5e9f51bcfd7779dc618c2b9a4f58
4
- data.tar.gz: 4806eb56f7556728fc848c7e54408a127393a921a29e248a9d32ba950b4f3ef3
3
+ metadata.gz: 1a08284da4d04e40f4e93ae233cb942100a239fafb71c52d733dd443603d7acb
4
+ data.tar.gz: c33b08cf18b3e3105f57ca01961e421b8f17776dbfa8117f29d4f2a91e26d65f
5
5
  SHA512:
6
- metadata.gz: 6bc2efb59de265f84c727ce67e9717fff724251136ffe7159a0a61151d335bb476386649e23ef5bb8a9982e387bebd53c58064817517fdac855bd9ac3fc4d6e8
7
- data.tar.gz: f0db303e86287d71099d0c0e29024663013cf4c44dffac1ac1d9c2a18113b34a4d5a1e9a6d3a4824833d1bb413a875deb0a45bb2f2becb25d4119d1028a1d10c
6
+ metadata.gz: 63799656ee7019c7ff4034c458ef8a8734db81771c514e4d922b4e159b97c30cd51a5833c2378a9ac95a4d2dfb2e516630724a7456f2f72e9935dedd24a8b44c
7
+ data.tar.gz: a1159d6f2233f1675573235caabe07c5571059092770573e662569e96fd2d0e60221f43f0af7e15151f8f130aade132e1567948b14680cee947df8cc7f3758a2
@@ -12,12 +12,12 @@ references:
12
12
  - &ruby_version
13
13
  ruby_version:
14
14
  type: enum
15
- enum: ['2.4', '2.5', '2.6', '2.7']
15
+ enum: ['2.5', '2.6', '2.7']
16
16
  default: '2.7'
17
17
  - &rails_version
18
18
  rails_version:
19
19
  type: enum
20
- enum: ['4.2', '5.0', '5.1', '5.2', '6.0']
20
+ enum: ['5.0', '5.1', '5.2', '6.0']
21
21
  default: '6.0'
22
22
  - &bundler_options
23
23
  bundler_options:
@@ -25,18 +25,25 @@ references:
25
25
  default: ''
26
26
 
27
27
  executors:
28
- executor_for_api:
28
+ api_executor:
29
29
  parameters:
30
30
  <<: *ruby_version
31
31
  docker:
32
- - image: circleci/ruby:<< parameters.ruby_version >>-node-browsers
32
+ - image: circleci/ruby:<< parameters.ruby_version >>
33
33
  working_directory: ~/repo/my_api
34
- executor_for_gem:
34
+ gem_executor:
35
35
  parameters:
36
36
  <<: *ruby_version
37
37
  docker:
38
- - image: circleci/ruby:<< parameters.ruby_version >>-node-browsers
38
+ - image: circleci/ruby:<< parameters.ruby_version >>
39
39
  working_directory: ~/repo
40
+ rails_executor:
41
+ parameters:
42
+ <<: *ruby_version
43
+ <<: *rails_version
44
+ docker:
45
+ - image: circleci/ruby:<< parameters.ruby_version >>
46
+ working_directory: ~/repo/rails_app/rails_<< parameters.rails_version >>
40
47
 
41
48
  commands:
42
49
  modify_active_support_version:
@@ -144,18 +151,18 @@ commands:
144
151
  path: ~/repo
145
152
  - run:
146
153
  name: Install Bundler 2.x
147
- command: gem install bundler:2.1.2
154
+ command: gem install bundler -v '~> 2.0'
148
155
  - ruby-orbs/bundle-install:
149
156
  cache_key_prefix: v1-dependencies-<< parameters.ruby_version >>
150
157
  bundle_extra_args: << parameters.bundler_options >>
151
158
  restore_bundled_with: false
152
159
  test_and_deploy_for_api:
153
- description: Build the API
160
+ description: Test and build the API
154
161
  steps:
155
162
  - run_rspec_for_api
156
163
  - deploy_api_server
157
164
  test_and_build_for_gem:
158
- description: Build the RubyGem
165
+ description: Test and build the RubyGem
159
166
  parameters:
160
167
  <<: *rails_version
161
168
  steps:
@@ -163,13 +170,44 @@ commands:
163
170
  rails_version: << parameters.rails_version >>
164
171
  - run_rspec_for_gem
165
172
  - rake_build
173
+ verify_api_client_generator:
174
+ description: Verify the API client generator
175
+ parameters:
176
+ <<: *rails_version
177
+ steps:
178
+ - run:
179
+ name: Generate new API client files
180
+ command: |
181
+ bin/rails g api_client path/to/resource \
182
+ get:path/to/resource \
183
+ post:path/to/resource \
184
+ --endpoint https://example.com/myapi
185
+ - run:
186
+ name: Check the API client files exists
187
+ command: |
188
+ test -e "app/api_clients/application_api_client.rb" & \
189
+ test -e "app/api_clients/path/to/resource_api_client.rb" & \
190
+ test -e "spec/api_clients/path/to/resource_api_client_spec.rb"
191
+ - run:
192
+ name: Run rspec with the generated spec file
193
+ command: bundle exec rspec -f d spec/api_clients/path/to
166
194
 
167
195
  jobs:
196
+ test_api:
197
+ parameters:
198
+ <<: *ruby_version
199
+ executor:
200
+ name: api_executor
201
+ ruby_version: << parameters.ruby_version >>
202
+ steps:
203
+ - setup:
204
+ ruby_version: << parameters.ruby_version >>
205
+ - run_rspec_for_api
168
206
  deploy_api:
169
207
  parameters:
170
208
  <<: *ruby_version
171
209
  executor:
172
- name: executor_for_api
210
+ name: api_executor
173
211
  ruby_version: << parameters.ruby_version >>
174
212
  steps:
175
213
  - setup:
@@ -181,7 +219,7 @@ jobs:
181
219
  <<: *rails_version
182
220
  <<: *bundler_options
183
221
  executor:
184
- name: executor_for_gem
222
+ name: gem_executor
185
223
  ruby_version: << parameters.ruby_version >>
186
224
  steps:
187
225
  - setup:
@@ -189,33 +227,46 @@ jobs:
189
227
  bundler_options: << parameters.bundler_options >>
190
228
  - test_and_build_for_gem:
191
229
  rails_version: << parameters.rails_version >>
230
+ verify_generator:
231
+ parameters:
232
+ <<: *ruby_version
233
+ <<: *rails_version
234
+ executor:
235
+ name: rails_executor
236
+ ruby_version: << parameters.ruby_version >>
237
+ rails_version: << parameters.rails_version >>
238
+ steps:
239
+ - setup:
240
+ ruby_version: << parameters.ruby_version >>
241
+ - verify_api_client_generator:
242
+ rails_version: << parameters.rails_version >>
192
243
  upload-coverage:
193
- executor: executor_for_gem
244
+ executor: gem_executor
194
245
  steps:
195
246
  - attach_workspace:
196
247
  at: ~/repo
197
248
  - code-climate/install
198
249
  - code-climate/sum-coverage:
199
250
  input: codeclimate.*.json
200
- parts: 19
251
+ parts: 13
201
252
  - code-climate/upload-coverage
202
253
  rubocop:
203
- executor: executor_for_gem
254
+ executor: gem_executor
204
255
  steps:
205
256
  - setup
206
257
  - rubocop
207
258
  yardoc:
208
- executor: executor_for_gem
259
+ executor: gem_executor
209
260
  steps:
210
261
  - setup
211
262
  - yardoc
212
263
  rubocop_challenge:
213
- executor: executor_for_gem
264
+ executor: gem_executor
214
265
  steps:
215
266
  - checkout
216
267
  - rubocop_challenge
217
268
  release:
218
- executor: executor_for_gem
269
+ executor: gem_executor
219
270
  steps:
220
271
  - setup
221
272
  - release
@@ -225,26 +276,6 @@ workflows:
225
276
 
226
277
  commit:
227
278
  jobs:
228
- - build_gem:
229
- name: build_on_ruby_2.4_and_rails_4.2
230
- ruby_version: '2.4'
231
- rails_version: '4.2'
232
- - build_gem:
233
- name: build_on_ruby_2.4_and_rails_5.0
234
- ruby_version: '2.4'
235
- rails_version: '5.0'
236
- - build_gem:
237
- name: build_on_ruby_2.4_and_rails_5.1
238
- ruby_version: '2.4'
239
- rails_version: '5.1'
240
- - build_gem:
241
- name: build_on_ruby_2.4_and_rails_5.2
242
- ruby_version: '2.4'
243
- rails_version: '5.2'
244
- - build_gem:
245
- name: build_on_ruby_2.5_and_rails_4.2
246
- ruby_version: '2.5'
247
- rails_version: '4.2'
248
279
  - build_gem:
249
280
  name: build_on_ruby_2.5_and_rails_5.0
250
281
  ruby_version: '2.5'
@@ -261,10 +292,6 @@ workflows:
261
292
  name: build_on_ruby_2.5_and_rails_6.0
262
293
  ruby_version: '2.5'
263
294
  rails_version: '6.0'
264
- - build_gem:
265
- name: build_on_ruby_2.6_and_rails_4.2
266
- ruby_version: '2.6'
267
- rails_version: '4.2'
268
295
  - build_gem:
269
296
  name: build_on_ruby_2.6_and_rails_5.0
270
297
  ruby_version: '2.6'
@@ -303,20 +330,39 @@ workflows:
303
330
  ruby_version: '2.7'
304
331
  rails_version: '6.0'
305
332
  bundler_options: '--without integrations'
333
+ - verify_generator:
334
+ name: verify_generator_on_ruby_2.5_and_rails_5.2
335
+ ruby_version: '2.5'
336
+ rails_version: '5.2'
337
+ - verify_generator:
338
+ name: verify_generator_on_ruby_2.5_and_rails_6.0
339
+ ruby_version: '2.5'
340
+ rails_version: '6.0'
341
+ - verify_generator:
342
+ name: verify_generator_on_ruby_2.6_and_rails_5.2
343
+ ruby_version: '2.6'
344
+ rails_version: '5.2'
345
+ - verify_generator:
346
+ name: verify_generator_on_ruby_2.6_and_rails_6.0
347
+ ruby_version: '2.6'
348
+ rails_version: '6.0'
349
+ - verify_generator:
350
+ name: verify_generator_on_ruby_2.7_and_rails_5.2
351
+ ruby_version: '2.7'
352
+ rails_version: '5.2'
353
+ - verify_generator:
354
+ name: verify_generator_on_ruby_2.7_and_rails_6.0
355
+ ruby_version: '2.7'
356
+ rails_version: '6.0'
357
+ - test_api
306
358
  - rubocop
307
359
  - yardoc
308
360
  - upload-coverage:
309
361
  requires:
310
- - build_on_ruby_2.4_and_rails_4.2
311
- - build_on_ruby_2.4_and_rails_5.0
312
- - build_on_ruby_2.4_and_rails_5.1
313
- - build_on_ruby_2.4_and_rails_5.2
314
- - build_on_ruby_2.5_and_rails_4.2
315
362
  - build_on_ruby_2.5_and_rails_5.0
316
363
  - build_on_ruby_2.5_and_rails_5.1
317
364
  - build_on_ruby_2.5_and_rails_5.2
318
365
  - build_on_ruby_2.5_and_rails_6.0
319
- - build_on_ruby_2.6_and_rails_4.2
320
366
  - build_on_ruby_2.6_and_rails_5.0
321
367
  - build_on_ruby_2.6_and_rails_5.1
322
368
  - build_on_ruby_2.6_and_rails_5.2
@@ -329,16 +375,10 @@ workflows:
329
375
  - release:
330
376
  context: RubyGems API Key
331
377
  requires:
332
- - build_on_ruby_2.4_and_rails_4.2
333
- - build_on_ruby_2.4_and_rails_5.0
334
- - build_on_ruby_2.4_and_rails_5.1
335
- - build_on_ruby_2.4_and_rails_5.2
336
- - build_on_ruby_2.5_and_rails_4.2
337
378
  - build_on_ruby_2.5_and_rails_5.0
338
379
  - build_on_ruby_2.5_and_rails_5.1
339
380
  - build_on_ruby_2.5_and_rails_5.2
340
381
  - build_on_ruby_2.5_and_rails_6.0
341
- - build_on_ruby_2.6_and_rails_4.2
342
382
  - build_on_ruby_2.6_and_rails_5.0
343
383
  - build_on_ruby_2.6_and_rails_5.1
344
384
  - build_on_ruby_2.6_and_rails_5.2
@@ -348,6 +388,12 @@ workflows:
348
388
  - build_on_ruby_2.7_and_rails_5.2
349
389
  - build_on_ruby_2.7_and_rails_6.0_with_integrations
350
390
  - build_on_ruby_2.7_and_rails_6.0_without_integrations
391
+ - verify_generator_on_ruby_2.5_and_rails_5.2
392
+ - verify_generator_on_ruby_2.5_and_rails_6.0
393
+ - verify_generator_on_ruby_2.6_and_rails_5.2
394
+ - verify_generator_on_ruby_2.6_and_rails_6.0
395
+ - verify_generator_on_ruby_2.7_and_rails_5.2
396
+ - verify_generator_on_ruby_2.7_and_rails_6.0
351
397
  - rubocop
352
398
  filters:
353
399
  branches:
@@ -2,9 +2,27 @@ version: 1
2
2
  update_configs:
3
3
  - package_manager: "ruby:bundler"
4
4
  directory: "/"
5
- update_schedule: "daily"
5
+ update_schedule: "live"
6
6
  default_reviewers:
7
7
  - "ryz310"
8
+ default_assignees:
9
+ - "ryz310"
10
+ default_labels:
11
+ - "dependabot"
12
+ automerged_updates:
13
+ - match:
14
+ dependency_type: "development"
15
+ update_type: "all"
16
+ - match:
17
+ dependency_type: "production"
18
+ update_type: "semver:patch"
19
+ - package_manager: "ruby:bundler"
20
+ directory: "/my_api"
21
+ update_schedule: "live"
22
+ default_reviewers:
23
+ - "ryz310"
24
+ default_assignees:
25
+ - "ryz310"
8
26
  default_labels:
9
27
  - "dependabot"
10
28
  automerged_updates:
@@ -5,7 +5,11 @@ require:
5
5
  inherit_from: .rubocop_todo.yml
6
6
 
7
7
  AllCops:
8
- TargetRubyVersion: 2.4
8
+ TargetRubyVersion: 2.5
9
+ NewCops: enable
10
+ Exclude:
11
+ - rails_app/**/*
12
+ - vendor/bundle/**/*
9
13
 
10
14
  Layout/LineLength:
11
15
  Max: 100
@@ -0,0 +1,5 @@
1
+ ---
2
+ Ignore:
3
+ - Performance/StartWith
4
+ - Style/HashTransformValues
5
+ - Style/StringConcatenation
@@ -1,7 +1,59 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2020-02-29 23:30:46 +0000 using RuboCop version 0.80.1.
3
+ # on 2020-12-02 23:30:30 UTC using RuboCop version 1.5.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 5
10
+ # Configuration parameters: AllowComments, AllowEmptyLambdas.
11
+ Lint/EmptyBlock:
12
+ Exclude:
13
+ - 'lib/my_api_client/rspec/matchers/be_handled_as_an_error.rb'
14
+ - 'spec/support/complete_about.rb'
15
+ - 'spec/support/complete_within.rb'
16
+
17
+ # Offense count: 5
18
+ Lint/MissingSuper:
19
+ Exclude:
20
+ - 'lib/my_api_client/error_handling/generator.rb'
21
+ - 'lib/my_api_client/error_handling/retry_option_processor.rb'
22
+ - 'lib/my_api_client/integrations/bugsnag.rb'
23
+ - 'lib/my_api_client/request/executor.rb'
24
+ - 'lib/my_api_client/sleeper.rb'
25
+
26
+ # Offense count: 6
27
+ # Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers.
28
+ # SupportedStyles: snake_case, normalcase, non_integer
29
+ # AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339
30
+ Naming/VariableNumber:
31
+ Exclude:
32
+ - 'spec/lib/my_api_client/error_handling_spec.rb'
33
+ - 'spec/lib/my_api_client/request/executor_spec.rb'
34
+
35
+ # Offense count: 60
36
+ # Configuration parameters: AllowSubject.
37
+ RSpec/MultipleMemoizedHelpers:
38
+ Max: 15
39
+
40
+ # Offense count: 3
41
+ Style/DocumentDynamicEvalDefinition:
42
+ Exclude:
43
+ - 'lib/my_api_client/config.rb'
44
+ - 'lib/my_api_client/request/basic.rb'
45
+ - 'lib/my_api_client/request/logger.rb'
46
+
47
+ # Offense count: 1
48
+ # Cop supports --auto-correct.
49
+ Style/HashTransformValues:
50
+ Exclude:
51
+ - 'lib/my_api_client/integrations/bugsnag.rb'
52
+
53
+ # Offense count: 3
54
+ # Cop supports --auto-correct.
55
+ Style/StringConcatenation:
56
+ Exclude:
57
+ - 'lib/my_api_client/request.rb'
58
+ - 'lib/my_api_client/rspec/matchers/request_to.rb'
59
+ - 'my_api/app/controllers/pagination_controller.rb'
@@ -1,5 +1,197 @@
1
1
  # Change log
2
2
 
3
+ ## v0.18.0 (Dec 04, 2020)
4
+
5
+ ### Feature
6
+
7
+ * [#381](https://github.com/ryz310/my_api_client/pull/381) Add endpoint option to the generator ([@ryz310](https://github.com/ryz310))
8
+
9
+ ### Breaking Change
10
+
11
+ * [#365](https://github.com/ryz310/my_api_client/pull/365) End of support for ruby 2.4 and rails 4.2 ([@ryz310](https://github.com/ryz310))
12
+
13
+ ### Rubocop Challenge
14
+
15
+ * [#383](https://github.com/ryz310/my_api_client/pull/383) Re-generate .rubocop_todo.yml with RuboCop v1.5.1 ([@ryz310](https://github.com/ryz310))
16
+
17
+ ### Dependabot
18
+
19
+ * [#338](https://github.com/ryz310/my_api_client/pull/338) ryz310/dependabot/bundler/faraday-1.1.0 ([@ryz310](https://github.com/ryz310))
20
+ * [#344](https://github.com/ryz310/my_api_client/pull/344) ryz310/dependabot/bundler/bugsnag-6.18.0 ([@ryz310](https://github.com/ryz310))
21
+ * [#345](https://github.com/ryz310/my_api_client/pull/345) ryz310/dependabot/bundler/rspec-3.10.0 ([@ryz310](https://github.com/ryz310))
22
+ * [#356](https://github.com/ryz310/my_api_client/pull/356) ryz310/dependabot/bundler/webmock-3.10.0 ([@ryz310](https://github.com/ryz310))
23
+ * [#369](https://github.com/ryz310/my_api_client/pull/369) ryz310/dependabot/bundler/jsonpath-1.0.6 ([@ryz310](https://github.com/ryz310))
24
+ * [#376](https://github.com/ryz310/my_api_client/pull/376) ryz310/dependabot/bundler/rubocop-performance-1.9.1 ([@ryz310](https://github.com/ryz310))
25
+ * [#380](https://github.com/ryz310/my_api_client/pull/380) ryz310/dependabot/bundler/rubocop-rspec-2.0.1 ([@ryz310](https://github.com/ryz310))
26
+ * [#382](https://github.com/ryz310/my_api_client/pull/382) ryz310/dependabot/bundler/rubocop-1.5.1 ([@ryz310](https://github.com/ryz310))
27
+
28
+ ## v0.17.0 (Sep 20, 2020)
29
+
30
+ ### Feature
31
+
32
+ * [#303](https://github.com/ryz310/my_api_client/pull/303) Change the duration format to milliseconds ([@ryz310](https://github.com/ryz310))
33
+ * [#308](https://github.com/ryz310/my_api_client/pull/308) Add testing for api client generators ([@ryz310](https://github.com/ryz310))
34
+
35
+ ### Rubocop Challenge
36
+
37
+ * [#311](https://github.com/ryz310/my_api_client/pull/311) Style/GlobalStdStream-20200906233350 ([@ryz310](https://github.com/ryz310))
38
+ * [#312](https://github.com/ryz310/my_api_client/pull/312) Style/StringConcatenation-20200907233020 ([@ryz310](https://github.com/ryz310))
39
+ * [#313](https://github.com/ryz310/my_api_client/pull/313) Style/HashTransformValues-20200908233016 ([@ryz310](https://github.com/ryz310))
40
+ * [#316](https://github.com/ryz310/my_api_client/pull/316) Layout/EmptyLinesAroundAttributeAccessor-20200909233021 ([@ryz310](https://github.com/ryz310))
41
+ * [#320](https://github.com/ryz310/my_api_client/pull/320) Re-generate .rubocop_todo.yml with RuboCop v0.91.0 ([@ryz310](https://github.com/ryz310))
42
+
43
+ ### Dependabot
44
+
45
+ * [#299](https://github.com/ryz310/my_api_client/pull/299) ryz310/dependabot/bundler/bugsnag-6.17.0 ([@ryz310](https://github.com/ryz310))
46
+ * [#310](https://github.com/ryz310/my_api_client/pull/310) ryz310/dependabot/bundler/rubocop-performance-1.8.0 ([@ryz310](https://github.com/ryz310))
47
+ * [#314](https://github.com/ryz310/my_api_client/pull/314) ryz310/dependabot/bundler/activesupport-5.2.4.4 ([@ryz310](https://github.com/ryz310))
48
+ * [#315](https://github.com/ryz310/my_api_client/pull/315) ryz310/dependabot/bundler/my_api/actionview-6.0.3.3 ([@ryz310](https://github.com/ryz310))
49
+ * [#318](https://github.com/ryz310/my_api_client/pull/318) ryz310/dependabot/bundler/webmock-3.9.1 ([@ryz310](https://github.com/ryz310))
50
+ * [#319](https://github.com/ryz310/my_api_client/pull/319) ryz310/dependabot/bundler/rubocop-0.91.0 ([@ryz310](https://github.com/ryz310))
51
+ * [#321](https://github.com/ryz310/my_api_client/pull/321) ryz310/dependabot/bundler/my_api/puma-5.0.0 ([@ryz310](https://github.com/ryz310))
52
+
53
+ ## v0.16.1 (Aug 27, 2020)
54
+
55
+ ### Feature
56
+
57
+ * [#296](https://github.com/ryz310/my_api_client/pull/296) Support HTTP PUT method ([@ryz310](https://github.com/ryz310))
58
+
59
+ ### Rubocop Challenge
60
+
61
+ * [#256](https://github.com/ryz310/my_api_client/pull/256) Performance/StartWith-20200523233027 ([@ryz310](https://github.com/ryz310))
62
+ * [#268](https://github.com/ryz310/my_api_client/pull/268) Lint/RedundantCopDisableDirective-20200622233019 ([@ryz310](https://github.com/ryz310))
63
+ * [#289](https://github.com/ryz310/my_api_client/pull/289) Re-generate .rubocop_todo.yml with RuboCop v0.89.1 ([@ryz310](https://github.com/ryz310))
64
+ * [#293](https://github.com/ryz310/my_api_client/pull/293) RSpec/LeadingSubject-20200817233022 ([@ryz310](https://github.com/ryz310))
65
+
66
+ ### Dependabot
67
+
68
+ * [#232](https://github.com/ryz310/my_api_client/pull/232) ryz310/dependabot/bundler/faraday-1.0.1 ([@ryz310](https://github.com/ryz310))
69
+ * [#241](https://github.com/ryz310/my_api_client/pull/241) ryz310/dependabot/bundler/my_api/byebug-11.1.3 ([@ryz310](https://github.com/ryz310))
70
+ * [#243](https://github.com/ryz310/my_api_client/pull/243) ryz310/dependabot/bundler/yard-0.9.25 ([@ryz310](https://github.com/ryz310))
71
+ * [#248](https://github.com/ryz310/my_api_client/pull/248) ryz310/dependabot/bundler/activesupport-5.2.4.3 ([@ryz310](https://github.com/ryz310))
72
+ * [#251](https://github.com/ryz310/my_api_client/pull/251) ryz310/dependabot/bundler/my_api/puma-4.3.5 ([@ryz310](https://github.com/ryz310))
73
+ * [#257](https://github.com/ryz310/my_api_client/pull/257) ryz310/dependabot/bundler/my_api/dynomite-1.2.6 ([@ryz310](https://github.com/ryz310))
74
+ * [#264](https://github.com/ryz310/my_api_client/pull/264) ryz310/dependabot/bundler/my_api/rack-2.2.3 ([@ryz310](https://github.com/ryz310))
75
+ * [#265](https://github.com/ryz310/my_api_client/pull/265) ryz310/dependabot/bundler/my_api/actionpack-6.0.3.2 ([@ryz310](https://github.com/ryz310))
76
+ * [#266](https://github.com/ryz310/my_api_client/pull/266) ryz310/dependabot/bundler/my_api/capybara-3.33.0 ([@ryz310](https://github.com/ryz310))
77
+ * [#281](https://github.com/ryz310/my_api_client/pull/281) ryz310/dependabot/bundler/rubocop-performance-1.7.1 ([@ryz310](https://github.com/ryz310))
78
+ * [#287](https://github.com/ryz310/my_api_client/pull/287) ryz310/dependabot/bundler/my_api/kramdown-2.3.0 ([@ryz310](https://github.com/ryz310))
79
+ * [#290](https://github.com/ryz310/my_api_client/pull/290) ryz310/dependabot/bundler/bugsnag-6.16.0 ([@ryz310](https://github.com/ryz310))
80
+ * [#294](https://github.com/ryz310/my_api_client/pull/294) ryz310/dependabot/bundler/my_api/jets-2.3.17 ([@ryz310](https://github.com/ryz310))
81
+ * [#295](https://github.com/ryz310/my_api_client/pull/295) ryz310/dependabot/bundler/rubocop-rspec-1.43.2 ([@ryz310](https://github.com/ryz310))
82
+
83
+ ### Misc
84
+
85
+ * [#271](https://github.com/ryz310/my_api_client/pull/271) Minor fixes ([@ryz310](https://github.com/ryz310))
86
+
87
+ ## v0.16.0 (Mar 29, 2020)
88
+
89
+ ### Breaking Change
90
+
91
+ #### [#225](https://github.com/ryz310/my_api_client/pull/225) Raise an exception whenever an error is detected ([@ryz310](https://github.com/ryz310))
92
+
93
+ Until now, using `with` or `block` in `error_handling` did not automatically raise an exception, but will now always raise an exception when an error is detected.
94
+ You can specify raising error class with `raise` option.
95
+
96
+ **Before**
97
+
98
+ ```rb
99
+ error_handling json: { '$.errors.code': 10..19 }, with: :my_error_handling
100
+
101
+ def my_error_handling
102
+ # Executes this method when an error is detected.
103
+ # No exception is raised. You can raise an error if necessary.
104
+ end
105
+ ```
106
+ ```rb
107
+ error_handling status_code: 500..599 do |_params, logger|
108
+ # Executes this block when an error is detected.
109
+ # No exception is raised. You can raise an error if necessary.
110
+ end
111
+ ```
112
+
113
+ **After**
114
+
115
+ ```rb
116
+ error_handling json: { '$.errors.code': 10..19 }, with: :my_error_handling
117
+
118
+ def my_error_handling
119
+ # Executes this method when an error is detected.
120
+ # And then raise `MyApiClient::Error`.
121
+ end
122
+ ```
123
+ ```rb
124
+ error_handling status_code: 500..599 do |params, logger|
125
+ # Executes this block when an error is detected.
126
+ # And then raise `MyApiClient::Error`.
127
+ end
128
+ ```
129
+
130
+ #### [#226](https://github.com/ryz310/my_api_client/pull/226) Default error handlers ([@ryz310](https://github.com/ryz310))
131
+
132
+ Until now, you needed define all `error_handling` or `retry_on` yourself. But will now some `error_handling` and `retry_on` are prepared as default.
133
+
134
+ You can check default `error_handling` or `retry_on` here.
135
+
136
+ See: https://github.com/ryz310/my_api_client/blob/master/lib/my_api_client/default_error_handlers.rb
137
+
138
+ ### Dependabot
139
+
140
+ * [#227](https://github.com/ryz310/my_api_client/pull/227) ryz310/dependabot/bundler/pry-byebug-3.9.0 ([@ryz310](https://github.com/ryz310))
141
+ * [#228](https://github.com/ryz310/my_api_client/pull/228) ryz310/dependabot/bundler/my_api/jets-2.3.15 ([@ryz310](https://github.com/ryz310))
142
+
143
+ ### Misc
144
+
145
+ * [#229](https://github.com/ryz310/my_api_client/pull/229) Edit dependabot configuration ([@ryz310](https://github.com/ryz310))
146
+
147
+ ## v0.15.0 (Mar 21, 2020)
148
+
149
+ ### Feature
150
+
151
+ * [#220](https://github.com/ryz310/my_api_client/pull/220) Pageable HTTP request ([@ryz310](https://github.com/ryz310))
152
+ * Add `#pageable_get` method (alias: `#pget`)
153
+ * For example:
154
+ * API client definition
155
+ ```ruby
156
+ class MyPaginationApiClient < ApplicationApiClient
157
+ endpoint 'https://example.com/v1'
158
+
159
+ # GET pagination?page=1
160
+ def pagination
161
+ pageable_get 'pagination', paging: '$.links.next', headers: headers, query: { page: 1 }
162
+ end
163
+
164
+ private
165
+
166
+ def headers
167
+ { 'Content-Type': 'application/json;charset=UTF-8' }
168
+ end
169
+ end
170
+ ```
171
+ * The pagination API response
172
+ ```json
173
+ {
174
+ "links": {
175
+ "next": "https://example.com/pagination?page=3",
176
+ "previous": "https://example.com/pagination?page=1",
177
+ },
178
+ "page": 2
179
+ }
180
+ ```
181
+ * Usage
182
+ ```ruby
183
+ api_clinet = MyPaginationApiClient.new
184
+ api_clinet.pagination.each do |response|
185
+ # Do something.
186
+ end
187
+
188
+ p = api_clinet.pagination
189
+ p.next # => 1st page result
190
+ p.next # => 2nd page result
191
+ p.next # => 3rd page result
192
+ ```
193
+ * [#223](https://github.com/ryz310/my_api_client/pull/223) Use Enumerator::Lazy instead of Enumerator ([@ryz310](https://github.com/ryz310))
194
+
3
195
  ## v0.14.0 (Mar 14, 2020)
4
196
 
5
197
  ### Feature