my_api_client 0.4.0 → 0.5.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 +4 -4
- data/.circleci/config.yml +39 -37
- data/.rubocop.yml +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +14 -10
- data/gemfiles/rails_4.2.gemfile +4 -0
- data/gemfiles/rails_5.0.gemfile +4 -0
- data/gemfiles/rails_5.1.gemfile +4 -0
- data/gemfiles/rails_5.2.gemfile +4 -0
- data/lib/my_api_client.rb +8 -0
- data/lib/my_api_client/errors.rb +19 -7
- data/lib/my_api_client/integrations/bugsnag.rb +19 -0
- data/lib/my_api_client/params/params.rb +3 -2
- data/lib/my_api_client/params/request.rb +2 -1
- data/lib/my_api_client/rspec/stub.rb +1 -1
- data/lib/my_api_client/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e0499ab884898c6a2b95fc688c095b7a3682f91dc1b5668b24bfb821a4d0a1c3
|
|
4
|
+
data.tar.gz: bc2d95d4973ef859aa5d95dba8adfa1f2378dfe396e53a303e223a480d93af34
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8ceb42331cb908e84d9555d33fffcbed248260d7b06345edc13effbfad2d13db213b1f1b37db40060b6d32792066821ab7c703720998c8e0bb91ea92bfa7599d
|
|
7
|
+
data.tar.gz: 560c704e9545c3ba16a04dabddd1ecc027b6c16591f710fc288bb7343d599c63c9dfb18ee142a3269ce87f95ea7a4f2ff9ee47ae72d8adb422886c6f772dbb8d
|
data/.circleci/config.yml
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
#
|
|
5
5
|
version: 2.1
|
|
6
6
|
|
|
7
|
+
orbs:
|
|
8
|
+
ruby-orbs: sue445/ruby-orbs@1.4.3
|
|
9
|
+
code-climate: rvla/code-climate@0.0.2
|
|
10
|
+
|
|
7
11
|
references:
|
|
8
12
|
- &ruby_version
|
|
9
13
|
ruby_version:
|
|
@@ -15,6 +19,10 @@ references:
|
|
|
15
19
|
type: enum
|
|
16
20
|
enum: ['4.2', '5.0', '5.1', '5.2']
|
|
17
21
|
default: '4.2'
|
|
22
|
+
- &bundler_options
|
|
23
|
+
bundler_options:
|
|
24
|
+
type: string
|
|
25
|
+
default: ''
|
|
18
26
|
|
|
19
27
|
executors:
|
|
20
28
|
default:
|
|
@@ -25,30 +33,6 @@ executors:
|
|
|
25
33
|
working_directory: ~/repo
|
|
26
34
|
|
|
27
35
|
commands:
|
|
28
|
-
download_cc_test_reporter:
|
|
29
|
-
description: 'Download cc-test-reporter'
|
|
30
|
-
steps:
|
|
31
|
-
- run: |
|
|
32
|
-
mkdir -p tmp/
|
|
33
|
-
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./tmp/cc-test-reporter
|
|
34
|
-
chmod +x ./tmp/cc-test-reporter
|
|
35
|
-
setup_bundle:
|
|
36
|
-
description: Setup Bundle
|
|
37
|
-
parameters:
|
|
38
|
-
<<: *ruby_version
|
|
39
|
-
steps:
|
|
40
|
-
- restore_cache:
|
|
41
|
-
keys:
|
|
42
|
-
- v1-dependencies-<< parameters.ruby_version >>-{{ checksum "Gemfile.lock" }}
|
|
43
|
-
- v1-dependencies-
|
|
44
|
-
- run:
|
|
45
|
-
name: Bundle Install
|
|
46
|
-
command: |
|
|
47
|
-
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
|
48
|
-
- save_cache:
|
|
49
|
-
paths:
|
|
50
|
-
- ./vendor/bundle
|
|
51
|
-
key: v1-dependencies-<< parameters.ruby_version >>-{{ checksum "Gemfile.lock" }}
|
|
52
36
|
modify_active_support_version:
|
|
53
37
|
description: Modify ActiveSupport Version
|
|
54
38
|
parameters:
|
|
@@ -65,13 +49,13 @@ commands:
|
|
|
65
49
|
command: |
|
|
66
50
|
mkdir /tmp/test-results
|
|
67
51
|
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
|
|
68
|
-
|
|
52
|
+
cc-test-reporter before-build
|
|
69
53
|
bundle exec rspec --format documentation \
|
|
70
54
|
--color \
|
|
71
55
|
--format RspecJunitFormatter \
|
|
72
56
|
--out /tmp/test-results/rspec.xml \
|
|
73
57
|
$TEST_FILES
|
|
74
|
-
|
|
58
|
+
cc-test-reporter after-build --coverage-input-type simplecov --exit-code $?
|
|
75
59
|
- store_test_results:
|
|
76
60
|
path: /tmp/test-results
|
|
77
61
|
- store_artifacts:
|
|
@@ -106,7 +90,7 @@ commands:
|
|
|
106
90
|
- run:
|
|
107
91
|
name: Create Rubygems Credentials
|
|
108
92
|
command: |
|
|
109
|
-
mkdir ~/.gem
|
|
93
|
+
mkdir ~/.gem || true
|
|
110
94
|
echo -e "---\n:rubygems_api_key: ${RUBYGEMS_API_KEY}" > ~/.gem/credentials
|
|
111
95
|
chmod 0600 ~/.gem/credentials
|
|
112
96
|
- run:
|
|
@@ -116,21 +100,22 @@ commands:
|
|
|
116
100
|
bundle exec rake release --trace
|
|
117
101
|
setup:
|
|
118
102
|
description: Setup for Job Working
|
|
103
|
+
parameters:
|
|
104
|
+
<<: *ruby_version
|
|
105
|
+
<<: *bundler_options
|
|
119
106
|
steps:
|
|
120
107
|
- checkout
|
|
121
|
-
-
|
|
122
|
-
|
|
108
|
+
- ruby-orbs/bundle-install:
|
|
109
|
+
cache_key_prefix: v1-dependencies-<< parameters.ruby_version >>
|
|
110
|
+
bundle_extra_args: << parameters.bundler_options >>
|
|
111
|
+
test_and_build:
|
|
123
112
|
description: Build the RubyGem
|
|
124
113
|
parameters:
|
|
125
|
-
<<: *ruby_version
|
|
126
114
|
<<: *rails_version
|
|
127
115
|
steps:
|
|
128
|
-
- checkout
|
|
129
|
-
- download_cc_test_reporter
|
|
130
|
-
- setup_bundle:
|
|
131
|
-
ruby_version: << parameters.ruby_version >>
|
|
132
116
|
- modify_active_support_version:
|
|
133
117
|
rails_version: << parameters.rails_version >>
|
|
118
|
+
- code-climate/install
|
|
134
119
|
- run_rspec
|
|
135
120
|
- rake_build
|
|
136
121
|
|
|
@@ -139,12 +124,15 @@ jobs:
|
|
|
139
124
|
parameters:
|
|
140
125
|
<<: *ruby_version
|
|
141
126
|
<<: *rails_version
|
|
127
|
+
<<: *bundler_options
|
|
142
128
|
executor:
|
|
143
129
|
name: default
|
|
144
130
|
ruby_version: << parameters.ruby_version >>
|
|
145
131
|
steps:
|
|
146
|
-
-
|
|
132
|
+
- setup:
|
|
147
133
|
ruby_version: << parameters.ruby_version >>
|
|
134
|
+
bundler_options: << parameters.bundler_options >>
|
|
135
|
+
- test_and_build:
|
|
148
136
|
rails_version: << parameters.rails_version >>
|
|
149
137
|
rubocop:
|
|
150
138
|
executor:
|
|
@@ -220,9 +208,15 @@ workflows:
|
|
|
220
208
|
ruby_version: '2.6'
|
|
221
209
|
rails_version: '5.1'
|
|
222
210
|
- build:
|
|
223
|
-
name:
|
|
211
|
+
name: build_on_ruby_2_6_and_rails_5_2_with_integrations
|
|
224
212
|
ruby_version: '2.6'
|
|
225
213
|
rails_version: '5.2'
|
|
214
|
+
bundler_options: '--with integrations'
|
|
215
|
+
- build:
|
|
216
|
+
name: build_on_ruby_2_6_and_rails_5_2_without_integrations
|
|
217
|
+
ruby_version: '2.6'
|
|
218
|
+
rails_version: '5.2'
|
|
219
|
+
bundler_options: '--without integrations'
|
|
226
220
|
- rubocop
|
|
227
221
|
- yardoc
|
|
228
222
|
- release:
|
|
@@ -239,7 +233,8 @@ workflows:
|
|
|
239
233
|
- build_on_ruby_2_6_and_rails_4_2
|
|
240
234
|
- build_on_ruby_2_6_and_rails_5_0
|
|
241
235
|
- build_on_ruby_2_6_and_rails_5_1
|
|
242
|
-
-
|
|
236
|
+
- build_on_ruby_2_6_and_rails_5_2_with_integrations
|
|
237
|
+
- build_on_ruby_2_6_and_rails_5_2_without_integrations
|
|
243
238
|
- rubocop
|
|
244
239
|
filters:
|
|
245
240
|
branches:
|
|
@@ -256,3 +251,10 @@ workflows:
|
|
|
256
251
|
- master
|
|
257
252
|
jobs:
|
|
258
253
|
- rubocop_challenge
|
|
254
|
+
|
|
255
|
+
experimental:
|
|
256
|
+
notify:
|
|
257
|
+
branches:
|
|
258
|
+
only:
|
|
259
|
+
- master
|
|
260
|
+
- production
|
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
my_api_client (0.
|
|
4
|
+
my_api_client (0.5.0)
|
|
5
5
|
activesupport (>= 4.2.0)
|
|
6
6
|
jsonpath
|
|
7
7
|
sawyer
|
|
@@ -17,13 +17,15 @@ GEM
|
|
|
17
17
|
addressable (2.6.0)
|
|
18
18
|
public_suffix (>= 2.0.2, < 4.0)
|
|
19
19
|
ast (2.4.0)
|
|
20
|
+
bugsnag (6.11.1)
|
|
21
|
+
concurrent-ruby (~> 1.0)
|
|
20
22
|
byebug (11.0.1)
|
|
21
23
|
coderay (1.1.2)
|
|
22
24
|
concurrent-ruby (1.1.5)
|
|
23
25
|
crack (0.4.3)
|
|
24
26
|
safe_yaml (~> 1.0.0)
|
|
25
27
|
diff-lcs (1.3)
|
|
26
|
-
docile (1.3.
|
|
28
|
+
docile (1.3.2)
|
|
27
29
|
faraday (0.15.4)
|
|
28
30
|
multipart-post (>= 1.2, < 3)
|
|
29
31
|
hashdiff (0.4.0)
|
|
@@ -31,7 +33,7 @@ GEM
|
|
|
31
33
|
concurrent-ruby (~> 1.0)
|
|
32
34
|
jaro_winkler (1.5.2)
|
|
33
35
|
json (2.2.0)
|
|
34
|
-
jsonpath (1.0.
|
|
36
|
+
jsonpath (1.0.4)
|
|
35
37
|
multi_json
|
|
36
38
|
to_regexp (~> 0.2.1)
|
|
37
39
|
method_source (0.9.2)
|
|
@@ -43,8 +45,9 @@ GEM
|
|
|
43
45
|
parallel (1.17.0)
|
|
44
46
|
parser (2.6.3.0)
|
|
45
47
|
ast (~> 2.4.0)
|
|
46
|
-
pr_comet (0.
|
|
48
|
+
pr_comet (0.2.0)
|
|
47
49
|
octokit
|
|
50
|
+
rainbow
|
|
48
51
|
pry (0.12.2)
|
|
49
52
|
coderay (~> 1.1.0)
|
|
50
53
|
method_source (~> 0.9.0)
|
|
@@ -58,15 +61,15 @@ GEM
|
|
|
58
61
|
rspec-core (~> 3.8.0)
|
|
59
62
|
rspec-expectations (~> 3.8.0)
|
|
60
63
|
rspec-mocks (~> 3.8.0)
|
|
61
|
-
rspec-core (3.8.
|
|
64
|
+
rspec-core (3.8.1)
|
|
62
65
|
rspec-support (~> 3.8.0)
|
|
63
|
-
rspec-expectations (3.8.
|
|
66
|
+
rspec-expectations (3.8.4)
|
|
64
67
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
65
68
|
rspec-support (~> 3.8.0)
|
|
66
|
-
rspec-mocks (3.8.
|
|
69
|
+
rspec-mocks (3.8.1)
|
|
67
70
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
68
71
|
rspec-support (~> 3.8.0)
|
|
69
|
-
rspec-support (3.8.
|
|
72
|
+
rspec-support (3.8.2)
|
|
70
73
|
rspec_junit_formatter (0.4.1)
|
|
71
74
|
rspec-core (>= 2, < 4, != 2.12.0)
|
|
72
75
|
rubocop (0.71.0)
|
|
@@ -95,16 +98,17 @@ GEM
|
|
|
95
98
|
tzinfo (1.2.5)
|
|
96
99
|
thread_safe (~> 0.1)
|
|
97
100
|
unicode-display_width (1.6.0)
|
|
98
|
-
webmock (3.
|
|
101
|
+
webmock (3.6.0)
|
|
99
102
|
addressable (>= 2.3.6)
|
|
100
103
|
crack (>= 0.3.2)
|
|
101
|
-
hashdiff
|
|
104
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
|
102
105
|
yard (0.9.19)
|
|
103
106
|
|
|
104
107
|
PLATFORMS
|
|
105
108
|
ruby
|
|
106
109
|
|
|
107
110
|
DEPENDENCIES
|
|
111
|
+
bugsnag (>= 6.11.0)
|
|
108
112
|
bundler (~> 1.16)
|
|
109
113
|
my_api_client!
|
|
110
114
|
pr_comet
|
data/gemfiles/rails_4.2.gemfile
CHANGED
data/gemfiles/rails_5.0.gemfile
CHANGED
data/gemfiles/rails_5.1.gemfile
CHANGED
data/gemfiles/rails_5.2.gemfile
CHANGED
data/lib/my_api_client.rb
CHANGED
|
@@ -18,6 +18,14 @@ require 'my_api_client/params/request'
|
|
|
18
18
|
require 'my_api_client/request'
|
|
19
19
|
require 'my_api_client/base'
|
|
20
20
|
|
|
21
|
+
# Loads gems for feature of integrations
|
|
22
|
+
begin
|
|
23
|
+
require 'bugsnag'
|
|
24
|
+
require 'my_api_client/integrations/bugsnag' if defined?(Bugsnag) && Bugsnag::VERSION >= '6.11.0'
|
|
25
|
+
rescue LoadError
|
|
26
|
+
nil
|
|
27
|
+
end
|
|
28
|
+
|
|
21
29
|
if Sawyer::VERSION < '0.8.2'
|
|
22
30
|
module Sawyer
|
|
23
31
|
# NOTE: Old sawyer does not have attribute reader for response body.
|
data/lib/my_api_client/errors.rb
CHANGED
|
@@ -4,12 +4,15 @@ module MyApiClient
|
|
|
4
4
|
# The ancestor class for all API request error
|
|
5
5
|
class Error < StandardError
|
|
6
6
|
attr_reader :params
|
|
7
|
-
delegate :
|
|
7
|
+
delegate :metadata, to: :params
|
|
8
|
+
alias to_bugsnag metadata
|
|
8
9
|
|
|
9
|
-
#
|
|
10
|
+
# Initialize the error class
|
|
10
11
|
#
|
|
11
|
-
# @param params [MyApiClient::Params::Params]
|
|
12
|
-
#
|
|
12
|
+
# @param params [MyApiClient::Params::Params]
|
|
13
|
+
# The request and response parameters
|
|
14
|
+
# @param error_message [String]
|
|
15
|
+
# The error description
|
|
13
16
|
def initialize(params, error_message = nil)
|
|
14
17
|
@params = params
|
|
15
18
|
super error_message
|
|
@@ -35,10 +38,12 @@ module MyApiClient
|
|
|
35
38
|
class NetworkError < Error
|
|
36
39
|
attr_reader :original_error
|
|
37
40
|
|
|
38
|
-
#
|
|
41
|
+
# Initialize the error class
|
|
39
42
|
#
|
|
40
|
-
# @param params [MyApiClient::Params::Params]
|
|
41
|
-
#
|
|
43
|
+
# @param params [MyApiClient::Params::Params]
|
|
44
|
+
# The request and response parameters
|
|
45
|
+
# @param original_error [StandardError]
|
|
46
|
+
# Some network error
|
|
42
47
|
def initialize(params, original_error)
|
|
43
48
|
@original_error = original_error
|
|
44
49
|
super params, original_error.message
|
|
@@ -50,6 +55,13 @@ module MyApiClient
|
|
|
50
55
|
def inspect
|
|
51
56
|
{ error: original_error, params: params }.inspect
|
|
52
57
|
end
|
|
58
|
+
|
|
59
|
+
# Generate metadata for bugsnag.
|
|
60
|
+
#
|
|
61
|
+
# @return [Hash] Metadata for bugsnag
|
|
62
|
+
def metadata
|
|
63
|
+
super.merge(original_error: original_error.inspect)
|
|
64
|
+
end
|
|
53
65
|
end
|
|
54
66
|
|
|
55
67
|
# NOTE: The built-in error classes are following. Although they are prepared
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module MyApiClient
|
|
4
|
+
# Override lib/my_api_client/errors.rb for supporting Bugsnag breadcrumbs
|
|
5
|
+
class Error < StandardError
|
|
6
|
+
alias _original_initialize initialize
|
|
7
|
+
|
|
8
|
+
# Override MyApiClient::Error#initialize
|
|
9
|
+
def initialize(params, error_message = nil)
|
|
10
|
+
_original_initialize(params, error_message)
|
|
11
|
+
|
|
12
|
+
Bugsnag.leave_breadcrumb(
|
|
13
|
+
"#{self.class.name} occurred",
|
|
14
|
+
metadata,
|
|
15
|
+
Bugsnag::Breadcrumbs::ERROR_BREADCRUMB_TYPE
|
|
16
|
+
)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -20,9 +20,10 @@ module MyApiClient
|
|
|
20
20
|
# Blank parameter will be omitted.
|
|
21
21
|
#
|
|
22
22
|
# @return [Hash] Metadata for bugsnag
|
|
23
|
-
def
|
|
23
|
+
def metadata
|
|
24
24
|
request_metadata.merge(response_metadata)
|
|
25
25
|
end
|
|
26
|
+
alias to_bugsnag metadata
|
|
26
27
|
|
|
27
28
|
# Returns contents as string for to be readable for human
|
|
28
29
|
#
|
|
@@ -39,7 +40,7 @@ module MyApiClient
|
|
|
39
40
|
# @return [Hash] Metadata for bugsnag
|
|
40
41
|
def request_metadata
|
|
41
42
|
if request.present?
|
|
42
|
-
request.
|
|
43
|
+
request.metadata.each_with_object({}) do |(key, value), memo|
|
|
43
44
|
memo[:"request_#{key}"] = value
|
|
44
45
|
end
|
|
45
46
|
else
|
|
@@ -32,7 +32,7 @@ module MyApiClient
|
|
|
32
32
|
# Blank parameter will be omitted.
|
|
33
33
|
#
|
|
34
34
|
# @return [Hash] Metadata for bugsnag
|
|
35
|
-
def
|
|
35
|
+
def metadata
|
|
36
36
|
{
|
|
37
37
|
line: "#{method.upcase} #{pathname}",
|
|
38
38
|
headers: headers,
|
|
@@ -40,6 +40,7 @@ module MyApiClient
|
|
|
40
40
|
body: body,
|
|
41
41
|
}.compact
|
|
42
42
|
end
|
|
43
|
+
alias to_bugsnag metadata
|
|
43
44
|
|
|
44
45
|
# Returns contents as string for to be readable for human
|
|
45
46
|
#
|
|
@@ -46,7 +46,7 @@ module MyApiClient
|
|
|
46
46
|
def process_raise_option(exception)
|
|
47
47
|
case exception
|
|
48
48
|
when Class
|
|
49
|
-
params = instance_double(MyApiClient::Params::Params,
|
|
49
|
+
params = instance_double(MyApiClient::Params::Params, metadata: {})
|
|
50
50
|
if exception == MyApiClient::NetworkError
|
|
51
51
|
exception.new(params, Net::OpenTimeout.new)
|
|
52
52
|
else
|
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.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ryz310
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-06-
|
|
11
|
+
date: 2019-06-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -260,6 +260,7 @@ files:
|
|
|
260
260
|
- lib/my_api_client/error_handling.rb
|
|
261
261
|
- lib/my_api_client/errors.rb
|
|
262
262
|
- lib/my_api_client/exceptions.rb
|
|
263
|
+
- lib/my_api_client/integrations/bugsnag.rb
|
|
263
264
|
- lib/my_api_client/logger.rb
|
|
264
265
|
- lib/my_api_client/params/params.rb
|
|
265
266
|
- lib/my_api_client/params/request.rb
|