my_api_client 0.13.0 → 0.16.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +102 -36
- data/.dependabot/config.yml +34 -0
- data/.envrc.skeleton +1 -0
- data/.rubocop.yml +8 -10
- data/.rubocop_challenge.yml +3 -0
- data/.rubocop_todo.yml +5 -10
- data/CHANGELOG.md +229 -0
- data/Gemfile.lock +48 -43
- data/README.jp.md +98 -23
- data/bin/console +4 -0
- data/example/api_clients/application_api_client.rb +13 -0
- data/example/api_clients/my_error_api_client.rb +34 -0
- data/example/api_clients/my_errors.rb +27 -0
- data/example/api_clients/my_pagination_api_client.rb +18 -0
- data/example/api_clients/my_rest_api_client.rb +48 -0
- data/example/api_clients/my_status_api_client.rb +22 -0
- data/lib/generators/rails/templates/application_api_client.rb.erb +0 -11
- data/lib/my_api_client.rb +10 -2
- data/lib/my_api_client/base.rb +2 -18
- data/lib/my_api_client/config.rb +0 -29
- data/lib/my_api_client/default_error_handlers.rb +64 -0
- data/lib/my_api_client/error_handling.rb +13 -23
- data/lib/my_api_client/error_handling/generator.rb +30 -10
- data/lib/my_api_client/error_handling/{process_retry_option.rb → retry_option_processor.rb} +1 -1
- data/lib/my_api_client/errors.rb +0 -53
- data/lib/my_api_client/errors/api_limit_error.rb +6 -0
- data/lib/my_api_client/errors/client_error.rb +93 -0
- data/lib/my_api_client/errors/network_error.rb +43 -0
- data/lib/my_api_client/errors/server_error.rb +42 -0
- data/lib/my_api_client/params/request.rb +7 -10
- data/lib/my_api_client/request.rb +48 -70
- data/lib/my_api_client/request/basic.rb +32 -0
- data/lib/my_api_client/request/executor.rb +89 -0
- data/lib/my_api_client/request/logger.rb +37 -0
- data/lib/my_api_client/request/pagination.rb +39 -0
- data/lib/my_api_client/rspec/matcher_helper.rb +2 -2
- data/lib/my_api_client/rspec/matchers/be_handled_as_an_error.rb +2 -0
- data/lib/my_api_client/rspec/matchers/request_to.rb +3 -4
- data/lib/my_api_client/version.rb +1 -1
- data/my_api/.envrc.skeleton +3 -0
- data/my_api/.gitignore +14 -0
- data/my_api/.jetskeep +1 -0
- data/my_api/.rspec +3 -0
- data/my_api/.ruby-version +1 -0
- data/my_api/Gemfile +23 -0
- data/my_api/Gemfile.lock +243 -0
- data/my_api/Procfile +7 -0
- data/my_api/README.md +54 -0
- data/my_api/Rakefile +4 -0
- data/my_api/app/controllers/application_controller.rb +5 -0
- data/my_api/app/controllers/error_controller.rb +21 -0
- data/my_api/app/controllers/pagination_controller.rb +58 -0
- data/my_api/app/controllers/rest_controller.rb +60 -0
- data/my_api/app/controllers/status_controller.rb +11 -0
- data/my_api/app/helpers/application_helper.rb +5 -0
- data/my_api/app/jobs/application_job.rb +7 -0
- data/my_api/app/models/application_item.rb +5 -0
- data/my_api/config.ru +7 -0
- data/my_api/config/application.rb +73 -0
- data/my_api/config/dynamodb.yml +22 -0
- data/my_api/config/environments/development.rb +9 -0
- data/my_api/config/environments/production.rb +11 -0
- data/my_api/config/environments/test.rb +9 -0
- data/my_api/config/routes.rb +17 -0
- data/my_api/db/.gitkeep +0 -0
- data/my_api/public/404.html +67 -0
- data/my_api/public/422.html +67 -0
- data/my_api/public/500.html +66 -0
- data/my_api/public/favicon.ico +0 -0
- data/my_api/public/index.html +91 -0
- data/my_api/spec/controllers/error_controller_spec.rb +43 -0
- data/my_api/spec/controllers/pagination_controller_spec.rb +73 -0
- data/my_api/spec/controllers/rest_controller_spec.rb +99 -0
- data/my_api/spec/controllers/status_controller_spec.rb +47 -0
- data/my_api/spec/fixtures/payloads/posts-index.json +51 -0
- data/my_api/spec/fixtures/payloads/posts-show.json +53 -0
- data/my_api/spec/spec_helper.rb +31 -0
- data/my_api_client.gemspec +1 -1
- metadata +62 -9
- data/lib/my_api_client/logger.rb +0 -36
- data/renovate.json +0 -5
@@ -0,0 +1,51 @@
|
|
1
|
+
{
|
2
|
+
"resource": "/posts",
|
3
|
+
"path": "/posts",
|
4
|
+
"httpMethod": "GET",
|
5
|
+
"headers": {
|
6
|
+
"Accept": "*/*",
|
7
|
+
"CloudFront-Forwarded-Proto": "https",
|
8
|
+
"CloudFront-Is-Desktop-Viewer": "true",
|
9
|
+
"CloudFront-Is-Mobile-Viewer": "false",
|
10
|
+
"CloudFront-Is-SmartTV-Viewer": "false",
|
11
|
+
"CloudFront-Is-Tablet-Viewer": "false",
|
12
|
+
"CloudFront-Viewer-Country": "US",
|
13
|
+
"Host": "qg45s7uvg2.execute-api.us-east-1.amazonaws.com",
|
14
|
+
"User-Agent": "curl/7.54.0",
|
15
|
+
"Via": "1.1 3d3d633d266d05d90a4eea7a6a59b514.cloudfront.net (CloudFront)",
|
16
|
+
"X-Amz-Cf-Id": "4mAgowukJJbA7lgTWITzgOPmdiDsXPCwy6vonS8VKPXCdEsmldVgdg==",
|
17
|
+
"X-Amzn-Trace-Id": "Root=1-59fb8ea5-38c5ad176dac130f3eb9ce97",
|
18
|
+
"X-Forwarded-For": "69.42.1.180, 54.239.203.118",
|
19
|
+
"X-Forwarded-Port": "443",
|
20
|
+
"X-Forwarded-Proto": "https"
|
21
|
+
},
|
22
|
+
"queryStringParameters": null,
|
23
|
+
"pathParameters": null,
|
24
|
+
"stageVariables": null,
|
25
|
+
"requestContext": {
|
26
|
+
"path": "/prod/posts",
|
27
|
+
"accountId": "123456789012",
|
28
|
+
"resourceId": "ery965",
|
29
|
+
"stage": "prod",
|
30
|
+
"requestId": "292fbcc8-c015-11e7-94fa-cd109b693f3c",
|
31
|
+
"identity": {
|
32
|
+
"cognitoIdentityPoolId": null,
|
33
|
+
"accountId": null,
|
34
|
+
"cognitoIdentityId": null,
|
35
|
+
"caller": null,
|
36
|
+
"apiKey": "",
|
37
|
+
"sourceIp": "69.42.1.180",
|
38
|
+
"accessKey": null,
|
39
|
+
"cognitoAuthenticationType": null,
|
40
|
+
"cognitoAuthenticationProvider": null,
|
41
|
+
"userArn": null,
|
42
|
+
"userAgent": "curl/7.54.0",
|
43
|
+
"user": null
|
44
|
+
},
|
45
|
+
"resourcePath": "/posts",
|
46
|
+
"httpMethod": "GET",
|
47
|
+
"apiId": "qg45s7uvg2"
|
48
|
+
},
|
49
|
+
"body": null,
|
50
|
+
"isBase64Encoded": false
|
51
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
{
|
2
|
+
"resource": "/posts/{id}",
|
3
|
+
"path": "/posts/tung",
|
4
|
+
"httpMethod": "GET",
|
5
|
+
"headers": {
|
6
|
+
"Accept": "*/*",
|
7
|
+
"CloudFront-Forwarded-Proto": "https",
|
8
|
+
"CloudFront-Is-Desktop-Viewer": "true",
|
9
|
+
"CloudFront-Is-Mobile-Viewer": "false",
|
10
|
+
"CloudFront-Is-SmartTV-Viewer": "false",
|
11
|
+
"CloudFront-Is-Tablet-Viewer": "false",
|
12
|
+
"CloudFront-Viewer-Country": "US",
|
13
|
+
"Host": "qg45s7uvg2.execute-api.us-east-1.amazonaws.com",
|
14
|
+
"User-Agent": "curl/7.54.0",
|
15
|
+
"Via": "1.1 dc553909528b8b63475c922dc07d8ba6.cloudfront.net (CloudFront)",
|
16
|
+
"X-Amz-Cf-Id": "s9NB2f_Z1scd6ksA4fcXA2r4QhpSKQ6QcTLQHGfxDPfI-X7sXM3YLg==",
|
17
|
+
"X-Amzn-Trace-Id": "Root=1-59fb8ecb-586ab81d73e36910793d767c",
|
18
|
+
"X-Forwarded-For": "69.42.1.180, 54.239.203.97",
|
19
|
+
"X-Forwarded-Port": "443",
|
20
|
+
"X-Forwarded-Proto": "https"
|
21
|
+
},
|
22
|
+
"queryStringParameters": null,
|
23
|
+
"pathParameters": {
|
24
|
+
"id": "tung"
|
25
|
+
},
|
26
|
+
"stageVariables": null,
|
27
|
+
"requestContext": {
|
28
|
+
"path": "/prod/posts/tung",
|
29
|
+
"accountId": "123456789012",
|
30
|
+
"resourceId": "wf2gvu",
|
31
|
+
"stage": "prod",
|
32
|
+
"requestId": "3feafb4e-c015-11e7-85c9-194f38f4c414",
|
33
|
+
"identity": {
|
34
|
+
"cognitoIdentityPoolId": null,
|
35
|
+
"accountId": null,
|
36
|
+
"cognitoIdentityId": null,
|
37
|
+
"caller": null,
|
38
|
+
"apiKey": "",
|
39
|
+
"sourceIp": "69.42.1.180",
|
40
|
+
"accessKey": null,
|
41
|
+
"cognitoAuthenticationType": null,
|
42
|
+
"cognitoAuthenticationProvider": null,
|
43
|
+
"userArn": null,
|
44
|
+
"userAgent": "curl/7.54.0",
|
45
|
+
"user": null
|
46
|
+
},
|
47
|
+
"resourcePath": "/posts/{id}",
|
48
|
+
"httpMethod": "GET",
|
49
|
+
"apiId": "qg45s7uvg2"
|
50
|
+
},
|
51
|
+
"body": null,
|
52
|
+
"isBase64Encoded": false
|
53
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
ENV['JETS_TEST'] = '1'
|
4
|
+
ENV['JETS_ENV'] ||= 'test'
|
5
|
+
ENV['JETS_STAGE'] ||= 'test'
|
6
|
+
# Ensures aws api never called. Fixture home folder does not contain ~/.aws/credentails
|
7
|
+
ENV['HOME'] = 'spec/fixtures/home'
|
8
|
+
|
9
|
+
require 'byebug'
|
10
|
+
require 'fileutils'
|
11
|
+
require 'jets'
|
12
|
+
|
13
|
+
abort('The Jets environment is running in production mode!') if Jets.env == 'production'
|
14
|
+
Jets.boot
|
15
|
+
|
16
|
+
require 'jets/spec_helpers'
|
17
|
+
|
18
|
+
# Rspec helper module
|
19
|
+
module Helpers
|
20
|
+
def payload(name)
|
21
|
+
JSON.parse(IO.read("spec/fixtures/payloads/#{name}.json"))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
RSpec.configure do |c|
|
26
|
+
c.include Helpers
|
27
|
+
end
|
28
|
+
|
29
|
+
Jets.application.configure do
|
30
|
+
config.helpers.host = 'https://example.com'
|
31
|
+
end
|
data/my_api_client.gemspec
CHANGED
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
|
|
37
37
|
spec.add_development_dependency 'rubocop'
|
38
38
|
spec.add_development_dependency 'rubocop-performance'
|
39
39
|
spec.add_development_dependency 'rubocop-rspec'
|
40
|
-
spec.add_development_dependency 'simplecov'
|
40
|
+
spec.add_development_dependency 'simplecov', '0.17.1'
|
41
41
|
spec.add_development_dependency 'webmock'
|
42
42
|
spec.add_development_dependency 'yard'
|
43
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: my_api_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ryz310
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -182,16 +182,16 @@ dependencies:
|
|
182
182
|
name: simplecov
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- -
|
185
|
+
- - '='
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
187
|
+
version: 0.17.1
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- -
|
192
|
+
- - '='
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
194
|
+
version: 0.17.1
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: webmock
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -228,11 +228,13 @@ extensions: []
|
|
228
228
|
extra_rdoc_files: []
|
229
229
|
files:
|
230
230
|
- ".circleci/config.yml"
|
231
|
+
- ".dependabot/config.yml"
|
231
232
|
- ".envrc.skeleton"
|
232
233
|
- ".gem_comet.yml"
|
233
234
|
- ".gitignore"
|
234
235
|
- ".rspec"
|
235
236
|
- ".rubocop.yml"
|
237
|
+
- ".rubocop_challenge.yml"
|
236
238
|
- ".rubocop_todo.yml"
|
237
239
|
- CHANGELOG.md
|
238
240
|
- CODE_OF_CONDUCT.md
|
@@ -244,6 +246,12 @@ files:
|
|
244
246
|
- Rakefile
|
245
247
|
- bin/console
|
246
248
|
- bin/setup
|
249
|
+
- example/api_clients/application_api_client.rb
|
250
|
+
- example/api_clients/my_error_api_client.rb
|
251
|
+
- example/api_clients/my_errors.rb
|
252
|
+
- example/api_clients/my_pagination_api_client.rb
|
253
|
+
- example/api_clients/my_rest_api_client.rb
|
254
|
+
- example/api_clients/my_status_api_client.rb
|
247
255
|
- gemfiles/rails_4.2.gemfile
|
248
256
|
- gemfiles/rails_5.0.gemfile
|
249
257
|
- gemfiles/rails_5.1.gemfile
|
@@ -260,16 +268,24 @@ files:
|
|
260
268
|
- lib/my_api_client.rb
|
261
269
|
- lib/my_api_client/base.rb
|
262
270
|
- lib/my_api_client/config.rb
|
271
|
+
- lib/my_api_client/default_error_handlers.rb
|
263
272
|
- lib/my_api_client/error_handling.rb
|
264
273
|
- lib/my_api_client/error_handling/generator.rb
|
265
|
-
- lib/my_api_client/error_handling/
|
274
|
+
- lib/my_api_client/error_handling/retry_option_processor.rb
|
266
275
|
- lib/my_api_client/errors.rb
|
276
|
+
- lib/my_api_client/errors/api_limit_error.rb
|
277
|
+
- lib/my_api_client/errors/client_error.rb
|
278
|
+
- lib/my_api_client/errors/network_error.rb
|
279
|
+
- lib/my_api_client/errors/server_error.rb
|
267
280
|
- lib/my_api_client/exceptions.rb
|
268
281
|
- lib/my_api_client/integrations/bugsnag.rb
|
269
|
-
- lib/my_api_client/logger.rb
|
270
282
|
- lib/my_api_client/params/params.rb
|
271
283
|
- lib/my_api_client/params/request.rb
|
272
284
|
- lib/my_api_client/request.rb
|
285
|
+
- lib/my_api_client/request/basic.rb
|
286
|
+
- lib/my_api_client/request/executor.rb
|
287
|
+
- lib/my_api_client/request/logger.rb
|
288
|
+
- lib/my_api_client/request/pagination.rb
|
273
289
|
- lib/my_api_client/rspec.rb
|
274
290
|
- lib/my_api_client/rspec/matcher_helper.rb
|
275
291
|
- lib/my_api_client/rspec/matchers/be_handled_as_an_error.rb
|
@@ -278,8 +294,45 @@ files:
|
|
278
294
|
- lib/my_api_client/service_abstract.rb
|
279
295
|
- lib/my_api_client/sleeper.rb
|
280
296
|
- lib/my_api_client/version.rb
|
297
|
+
- my_api/.envrc.skeleton
|
298
|
+
- my_api/.gitignore
|
299
|
+
- my_api/.jetskeep
|
300
|
+
- my_api/.rspec
|
301
|
+
- my_api/.ruby-version
|
302
|
+
- my_api/Gemfile
|
303
|
+
- my_api/Gemfile.lock
|
304
|
+
- my_api/Procfile
|
305
|
+
- my_api/README.md
|
306
|
+
- my_api/Rakefile
|
307
|
+
- my_api/app/controllers/application_controller.rb
|
308
|
+
- my_api/app/controllers/error_controller.rb
|
309
|
+
- my_api/app/controllers/pagination_controller.rb
|
310
|
+
- my_api/app/controllers/rest_controller.rb
|
311
|
+
- my_api/app/controllers/status_controller.rb
|
312
|
+
- my_api/app/helpers/application_helper.rb
|
313
|
+
- my_api/app/jobs/application_job.rb
|
314
|
+
- my_api/app/models/application_item.rb
|
315
|
+
- my_api/config.ru
|
316
|
+
- my_api/config/application.rb
|
317
|
+
- my_api/config/dynamodb.yml
|
318
|
+
- my_api/config/environments/development.rb
|
319
|
+
- my_api/config/environments/production.rb
|
320
|
+
- my_api/config/environments/test.rb
|
321
|
+
- my_api/config/routes.rb
|
322
|
+
- my_api/db/.gitkeep
|
323
|
+
- my_api/public/404.html
|
324
|
+
- my_api/public/422.html
|
325
|
+
- my_api/public/500.html
|
326
|
+
- my_api/public/favicon.ico
|
327
|
+
- my_api/public/index.html
|
328
|
+
- my_api/spec/controllers/error_controller_spec.rb
|
329
|
+
- my_api/spec/controllers/pagination_controller_spec.rb
|
330
|
+
- my_api/spec/controllers/rest_controller_spec.rb
|
331
|
+
- my_api/spec/controllers/status_controller_spec.rb
|
332
|
+
- my_api/spec/fixtures/payloads/posts-index.json
|
333
|
+
- my_api/spec/fixtures/payloads/posts-show.json
|
334
|
+
- my_api/spec/spec_helper.rb
|
281
335
|
- my_api_client.gemspec
|
282
|
-
- renovate.json
|
283
336
|
homepage: https://github.com/ryz310/my_api_client
|
284
337
|
licenses:
|
285
338
|
- MIT
|
data/lib/my_api_client/logger.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module MyApiClient
|
4
|
-
# Description of Logger
|
5
|
-
class Logger
|
6
|
-
attr_reader :logger, :method, :pathname
|
7
|
-
|
8
|
-
LOG_LEVEL = %i[debug info warn error fatal].freeze
|
9
|
-
|
10
|
-
# Description of #initialize
|
11
|
-
#
|
12
|
-
# @param logger [::Logger] describe_logger_here
|
13
|
-
# @param faraday [Faraday::Connection] describe_faraday_here
|
14
|
-
# @param method [String] HTTP method
|
15
|
-
# @param pathname [String] The path name
|
16
|
-
def initialize(logger, faraday, method, pathname)
|
17
|
-
@logger = logger
|
18
|
-
@method = method.to_s.upcase
|
19
|
-
@pathname = faraday.build_exclusive_url(pathname)
|
20
|
-
end
|
21
|
-
|
22
|
-
LOG_LEVEL.each do |level|
|
23
|
-
class_eval <<~METHOD, __FILE__, __LINE__ + 1
|
24
|
-
def #{level}(message)
|
25
|
-
logger.#{level}(format(message))
|
26
|
-
end
|
27
|
-
METHOD
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def format(message)
|
33
|
-
"API request `#{method} #{pathname}`: \"#{message}\""
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|