bugsnag-api 2.1.0 → 3.0.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: 0de7c6d92a7d28e2e96de5506e2ecb7e6edd60a087e949b955325628aa93358d
4
- data.tar.gz: 61831b2e22916700edc08be34557d2b01f3fb0a23220436297236d8b413d5d72
3
+ metadata.gz: cb92be973f329fc0b534281572a49ac0bfc82d4a5effd917d7b10f2eb9d9a19c
4
+ data.tar.gz: 6bfb6147eb71be5cb1673c8a550b28af198e63dbd024eb1c1e8da40ec46e14b2
5
5
  SHA512:
6
- metadata.gz: 9465be48ec9a6bb9a0ec5d1278c8e16a5a296ad5bd802d2e3a839df2e2e3be5a1ecf9eb4dc0c841f3e78e8444b4dc81504e9efbad6cb58e6fecb423817e2db93
7
- data.tar.gz: 2edd21ddbe339ef9f00147c6d398a1ba1013f8c7df9e78d6244a722fcd72c94d962495e1514231ff46421695aa5423ecb561d6478dcab4e936dab986499c7335
6
+ metadata.gz: d021963f0b0b663ced606dd48b8beef0d1b92cac78452ef582bcc10c46e96f3cffbdbeed6bfad82699cac1c207d0b9b26d19f6ac71380dd938f9af8d4ca56bb0
7
+ data.tar.gz: c3e14c300c70fa0fd80f498819f9e1f9ae59ec31b6ba5a2344e85b8eda87b66b163e21ad0eacb36686d9452a26b9396a03957b925979d590054e37cebde5fe73
@@ -8,7 +8,7 @@ jobs:
8
8
  strategy:
9
9
  fail-fast: false
10
10
  matrix:
11
- ruby-version: ['2.1', '2.2', '2.3', '2.4', '2.5', '2.6', '2.7', '3.0']
11
+ ruby-version: ['2.6', '2.7', '3.0', '3.1']
12
12
 
13
13
  steps:
14
14
  - uses: actions/checkout@v2
@@ -34,20 +34,3 @@ jobs:
34
34
  bundler-cache: true
35
35
 
36
36
  - run: bundle exec rubocop lib/
37
-
38
- # Ruby 1.9 and 2.0 aren't supported by setup-ruby so we have to use Docker instead
39
- legacy:
40
- runs-on: ubuntu-latest
41
- strategy:
42
- fail-fast: false
43
- matrix:
44
- ruby-version: ['1.9', '2.0']
45
-
46
- container: ruby:${{ matrix.ruby-version }}
47
-
48
- steps:
49
- - uses: actions/checkout@v2
50
-
51
- - run: bundle install
52
-
53
- - run: bundle exec rake spec
data/CHANGELOG.md CHANGED
@@ -1,6 +1,25 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ ## 3.0.0 (3 November 2022)
5
+
6
+ ### Enhancements
7
+
8
+ * Update required Sawyer version to `~> 0.9.2`
9
+ | [ilvez](https://github.com/ilvez)
10
+ | [#43](https://github.com/bugsnag/bugsnag-api-ruby/pull/43)
11
+
12
+ * Require Ruby 2.6+
13
+ | [#44](https://github.com/bugsnag/bugsnag-api-ruby/pull/44)
14
+
15
+ ## 2.1.1 (2 November 2021)
16
+
17
+ ### Fixes
18
+
19
+ * Fix Faraday deprecation warning
20
+ | [sambostock](https://github.com/sambostock)
21
+ | [#36](https://github.com/bugsnag/bugsnag-api-ruby/pull/36)
22
+
4
23
  ## 2.1.0 (28 July 2021)
5
24
 
6
25
  ### Enhancements
data/README.md CHANGED
@@ -1,10 +1,9 @@
1
1
  Bugsnag API Toolkit for Ruby
2
2
  ============================
3
- ![Build status](https://travis-ci.org/bugsnag/bugsnag-api-ruby.svg?branch=master)
4
3
 
5
4
  The library allows for quick read/write access to the [Bugsnag Data Access API](https://docs.bugsnag.com/api/data-access/) from your Ruby applications. You can use this library to build your own applications which leverage data found in your Bugsnag dashboard.
6
5
 
7
- Version 2.x (current) of this gem corresponds to v2 of the Data Access API, while [1.x](https://github.com/bugsnag/bugsnag-api-ruby/tree/v1.0.3) uses the (deprecated) v1 of the Data Access API.
6
+ Version 3.x (current) and 2.x of this gem corresponds to v2 of the Data Access API, while [1.x](https://github.com/bugsnag/bugsnag-api-ruby/tree/v1.0.3) uses the (deprecated) v1 of the Data Access API.
8
7
 
9
8
  If you are looking to automatically detect crashes in your Ruby apps, you should take a look at the [Bugsnag Ruby Detection Library](https://docs.bugsnag.com/platforms/ruby) instead.
10
9
 
data/bugsnag-api.gemspec CHANGED
@@ -18,49 +18,16 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- if RUBY_VERSION < "2.2.0"
22
- spec.add_dependency "sawyer", '0.8.1'
21
+ spec.required_ruby_version = ">= 2.6"
23
22
 
24
- spec.add_development_dependency "rake", "< 12.0.0"
25
- spec.add_development_dependency "rubocop", "0.41.2"
26
- spec.add_development_dependency "faker", "1.3.0"
27
-
28
- # i18n is used by faker
29
- spec.add_development_dependency "i18n", "< 1.0.0"
30
-
31
- # crack is used by webmock
32
- spec.add_development_dependency "crack", "< 0.4.5"
33
- else
34
- spec.add_dependency "sawyer", '~> 0.8.1'
35
-
36
- spec.add_development_dependency "rake"
37
- spec.add_development_dependency "rubocop", "~> 0.52.1"
38
- spec.add_development_dependency "faker", "> 1.7.3"
39
- end
40
-
41
- if RUBY_VERSION < "2.0.0"
42
- spec.add_development_dependency "json", "< 2.0.0"
43
- spec.add_development_dependency "webmock", "2.3.2"
44
- spec.add_development_dependency "addressable", "2.3.6"
45
-
46
- # hashdiff is used by webmock
47
- spec.add_development_dependency "hashdiff", "< 0.3.8"
48
-
49
- # parser is used by rubocop
50
- spec.add_development_dependency "parser", "< 2.5.0"
51
- else
52
- spec.add_development_dependency "json"
53
- spec.add_development_dependency "webmock", "> 2.3.2"
54
- spec.add_development_dependency "addressable", "> 2.3.6"
55
- end
56
-
57
- # public_suffix is used by addressable & sawyer
58
- if RUBY_VERSION < "2.0.0"
59
- spec.add_development_dependency "public_suffix", "< 1.5.0"
60
- elsif RUBY_VERSION < "2.1.0"
61
- spec.add_development_dependency "public_suffix", "< 3.0.0"
62
- end
23
+ spec.add_dependency "sawyer", '~> 0.9.2'
63
24
 
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "rubocop", "~> 0.52.1"
27
+ spec.add_development_dependency "faker", "> 1.7.3"
28
+ spec.add_development_dependency "webmock", "> 2.3.2"
29
+ spec.add_development_dependency "addressable", "> 2.3.6"
30
+ spec.add_development_dependency "json"
64
31
  spec.add_development_dependency "rspec", "~> 3.0"
65
32
  spec.add_development_dependency "vcr", "~> 2.9"
66
33
  end
@@ -13,6 +13,8 @@ require "bugsnag/api/client/comments"
13
13
  require "bugsnag/api/client/stability"
14
14
  require "bugsnag/api/client/releases"
15
15
 
16
+ require "base64"
17
+
16
18
  module Bugsnag
17
19
  module Api
18
20
 
@@ -169,9 +171,11 @@ module Bugsnag
169
171
  http.headers[:user_agent] = configuration.user_agent
170
172
 
171
173
  if basic_authenticated?
172
- http.basic_auth configuration.email, configuration.password
174
+ credentials = Base64.strict_encode64("#{configuration.email}:#{configuration.password}")
175
+
176
+ http.headers[:Authorization] = "Basic #{credentials}"
173
177
  elsif token_authenticated?
174
- http.authorization "token", configuration.auth_token
178
+ http.headers[:Authorization] = "token #{configuration.auth_token}"
175
179
  end
176
180
  end
177
181
  end
@@ -8,7 +8,7 @@ module Bugsnag
8
8
 
9
9
  # This class raises an Bugsnag-flavored exception based
10
10
  # HTTP status codes returned by the API
11
- class RaiseError < Faraday::Response::Middleware
11
+ class RaiseError < Faraday::Response::RaiseError
12
12
  def on_complete(response)
13
13
  if error = Bugsnag::Api::Error.from_response(response)
14
14
  raise error
@@ -1,5 +1,5 @@
1
1
  module Bugsnag
2
2
  module Api
3
- VERSION = "2.1.0"
3
+ VERSION = "3.0.0"
4
4
  end
5
5
  end
data/lib/bugsnag/api.rb CHANGED
@@ -20,7 +20,10 @@ module Bugsnag
20
20
  client.configuration
21
21
  end
22
22
 
23
- # Get the static API client
23
+ # Get the static API client. Note that using the static API
24
+ # client may not work as expected in a multithreaded environment
25
+ # (e.g. when using the {#paginate} or {#last_response} instance
26
+ # methods)
24
27
  #
25
28
  # @return [Bugsnag::Api::Client] API client
26
29
  def client
@@ -16,7 +16,7 @@ http_interactions:
16
16
  X-Bugsnag-Api:
17
17
  - 'true'
18
18
  Authorization:
19
- - Basic c3VwcG9ydEBidWdzbmFnLmNvbTpwYXNzd29yZA==
19
+ - Basic QlVHU05BR19VU0VSX0VNQUlMOkJVR1NOQUdfUEFTU1dPUkQ=
20
20
  Accept-Encoding:
21
21
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
22
  Accept:
@@ -16,7 +16,7 @@ http_interactions:
16
16
  X-Bugsnag-Api:
17
17
  - 'true'
18
18
  Authorization:
19
- - Basic c3VwcG9ydEBidWdzbmFnLmNvbTpwYXNzd29yZA==
19
+ - Basic QlVHU05BR19VU0VSX0VNQUlMOkJVR1NOQUdfUEFTU1dPUkQ=
20
20
  Accept-Encoding:
21
21
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
22
  Accept:
@@ -16,7 +16,7 @@ http_interactions:
16
16
  X-Bugsnag-Api:
17
17
  - 'true'
18
18
  Authorization:
19
- - Basic c3VwcG9ydEBidWdzbmFnLmNvbTpwYXNzd29yZA==
19
+ - Basic QlVHU05BR19VU0VSX0VNQUlMOkJVR1NOQUdfUEFTU1dPUkQ=
20
20
  Accept-Encoding:
21
21
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
22
  Accept:
@@ -16,7 +16,7 @@ http_interactions:
16
16
  X-Bugsnag-Api:
17
17
  - 'true'
18
18
  Authorization:
19
- - Basic c3VwcG9ydEBidWdzbmFnLmNvbTpwYXNzd29yZA==
19
+ - Basic QlVHU05BR19VU0VSX0VNQUlMOkJVR1NOQUdfUEFTU1dPUkQ=
20
20
  Accept-Encoding:
21
21
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
22
  Accept:
@@ -84,7 +84,7 @@ http_interactions:
84
84
  X-Bugsnag-Api:
85
85
  - 'true'
86
86
  Authorization:
87
- - Basic c3VwcG9ydEBidWdzbmFnLmNvbTpwYXNzd29yZA==
87
+ - Basic QlVHU05BR19VU0VSX0VNQUlMOkJVR1NOQUdfUEFTU1dPUkQ=
88
88
  Accept-Encoding:
89
89
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
90
90
  Accept:
@@ -16,7 +16,7 @@ http_interactions:
16
16
  X-Bugsnag-Api:
17
17
  - 'true'
18
18
  Authorization:
19
- - Basic c3VwcG9ydEBidWdzbmFnLmNvbTpwYXNzd29yZA==
19
+ - Basic QlVHU05BR19VU0VSX0VNQUlMOkJVR1NOQUdfUEFTU1dPUkQ=
20
20
  Accept-Encoding:
21
21
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
22
  Accept:
@@ -84,7 +84,7 @@ http_interactions:
84
84
  X-Bugsnag-Api:
85
85
  - 'true'
86
86
  Authorization:
87
- - Basic c3VwcG9ydEBidWdzbmFnLmNvbTpwYXNzd29yZA==
87
+ - Basic QlVHU05BR19VU0VSX0VNQUlMOkJVR1NOQUdfUEFTU1dPUkQ=
88
88
  Accept-Encoding:
89
89
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
90
90
  Accept:
@@ -16,7 +16,7 @@ http_interactions:
16
16
  X-Bugsnag-Api:
17
17
  - 'true'
18
18
  Authorization:
19
- - Basic c3VwcG9ydEBidWdzbmFnLmNvbTpwYXNzd29yZA==
19
+ - Basic QlVHU05BR19VU0VSX0VNQUlMOkJVR1NOQUdfUEFTU1dPUkQ=
20
20
  Accept-Encoding:
21
21
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
22
  Accept:
@@ -84,7 +84,7 @@ http_interactions:
84
84
  X-Bugsnag-Api:
85
85
  - 'true'
86
86
  Authorization:
87
- - Basic c3VwcG9ydEBidWdzbmFnLmNvbTpwYXNzd29yZA==
87
+ - Basic QlVHU05BR19VU0VSX0VNQUlMOkJVR1NOQUdfUEFTU1dPUkQ=
88
88
  Accept-Encoding:
89
89
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
90
90
  Accept:
data/spec/spec_helper.rb CHANGED
@@ -23,9 +23,28 @@ VCR.configure do |c|
23
23
  c.cassette_library_dir = "spec/cassettes"
24
24
  c.hook_into :webmock
25
25
  c.configure_rspec_metadata!
26
+
27
+ USER_AGENT_REGEX = /\ABugsnag API Ruby Gem \d+\.\d+\.\d+\z/
28
+ HEADERS_SET_BY_BUGSNAG = ["Content-Type", "X-Version", "X-Bugsnag-Api", "Authorization"]
29
+
30
+ user_agent_valid = lambda do |values|
31
+ return false if values.length != 1
32
+
33
+ values.first.match(USER_AGENT_REGEX)
34
+ end
35
+
36
+ header_matcher = lambda do |request_a, request_b|
37
+ return false unless user_agent_valid.(request_a.headers["User-Agent"])
38
+ return false unless user_agent_valid.(request_b.headers["User-Agent"])
39
+
40
+ HEADERS_SET_BY_BUGSNAG.all? do |header|
41
+ request_a.headers[header] == request_b.headers[header]
42
+ end
43
+ end
44
+
26
45
  c.default_cassette_options = {
27
- :record => ENV['TRAVIS'] ? :none : :once,
28
- :match_requests_on => [:method, :path]
46
+ :record => ENV['CI'] ? :none : :once,
47
+ :match_requests_on => [:method, :path, header_matcher]
29
48
  }
30
49
 
31
50
  c.filter_sensitive_data("https://api.bugsnag.com") { test_bugsnag_endpoint }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bugsnag-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-28 00:00:00.000000000 Z
11
+ date: 2022-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sawyer
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.8.1
19
+ version: 0.9.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.8.1
26
+ version: 0.9.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -67,47 +67,47 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.7.3
69
69
  - !ruby/object:Gem::Dependency
70
- name: json
70
+ name: webmock
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - ">"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 2.3.2
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - ">"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 2.3.2
83
83
  - !ruby/object:Gem::Dependency
84
- name: webmock
84
+ name: addressable
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">"
88
88
  - !ruby/object:Gem::Version
89
- version: 2.3.2
89
+ version: 2.3.6
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">"
95
95
  - !ruby/object:Gem::Version
96
- version: 2.3.2
96
+ version: 2.3.6
97
97
  - !ruby/object:Gem::Dependency
98
- name: addressable
98
+ name: json
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 2.3.6
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 2.3.6
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -257,14 +257,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
257
257
  requirements:
258
258
  - - ">="
259
259
  - !ruby/object:Gem::Version
260
- version: '0'
260
+ version: '2.6'
261
261
  required_rubygems_version: !ruby/object:Gem::Requirement
262
262
  requirements:
263
263
  - - ">="
264
264
  - !ruby/object:Gem::Version
265
265
  version: '0'
266
266
  requirements: []
267
- rubygems_version: 3.2.11
267
+ rubygems_version: 3.0.3.1
268
268
  signing_key:
269
269
  specification_version: 4
270
270
  summary: Bugsnag API toolkit for ruby