sentry-ruby-core 4.9.2 → 5.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 +4 -4
- data/lib/sentry/transport/configuration.rb +1 -2
- data/lib/sentry/transport/http_transport.rb +52 -35
- data/lib/sentry/version.rb +1 -1
- data/sentry-ruby-core.gemspec +0 -1
- data/sentry-ruby.gemspec +0 -1
- metadata +2 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f87f499a85374ffedb9efc48ae758ea007a44276d85af7ca7899f4d30d44cd73
|
|
4
|
+
data.tar.gz: 613088c3759d726b675992785bcfb76996227af0ac5ee04b196140b4f0d17903
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 95bd72a765827b11e63deeb884057e3365590a96e2417185996e4bac3880c2df26daf9fcff36e1c7eb145fbe481b001e6d0113ea7caad8e0f72d88a7e4eb4446
|
|
7
|
+
data.tar.gz: 39256b355acf287b49bddb5f2e35c2c2fe761723a738165b0a79bd66927a07d5f170a7d6e5eb66dd6e019af8278dbbf0cc6a52238dafa9a3b3bd90e30b805b9e
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
module Sentry
|
|
4
4
|
class Transport
|
|
5
5
|
class Configuration
|
|
6
|
-
attr_accessor :timeout, :open_timeout, :proxy, :ssl, :ssl_ca_file, :ssl_verification, :
|
|
7
|
-
:encoding
|
|
6
|
+
attr_accessor :timeout, :open_timeout, :proxy, :ssl, :ssl_ca_file, :ssl_verification, :encoding
|
|
8
7
|
attr_reader :transport_class
|
|
9
8
|
|
|
10
9
|
def initialize
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
3
|
+
require "net/http"
|
|
4
|
+
require "zlib"
|
|
5
5
|
|
|
6
6
|
module Sentry
|
|
7
7
|
class HTTPTransport < Transport
|
|
@@ -12,12 +12,12 @@ module Sentry
|
|
|
12
12
|
DEFAULT_DELAY = 60
|
|
13
13
|
RETRY_AFTER_HEADER = "retry-after"
|
|
14
14
|
RATE_LIMIT_HEADER = "x-sentry-rate-limits"
|
|
15
|
+
USER_AGENT = "sentry-ruby/#{Sentry::VERSION}"
|
|
15
16
|
|
|
16
|
-
attr_reader :conn
|
|
17
|
+
attr_reader :conn
|
|
17
18
|
|
|
18
19
|
def initialize(*args)
|
|
19
20
|
super
|
|
20
|
-
@adapter = @transport_configuration.http_adapter || Faraday.default_adapter
|
|
21
21
|
@conn = set_conn
|
|
22
22
|
@endpoint = @dsn.envelope_endpoint
|
|
23
23
|
end
|
|
@@ -30,29 +30,37 @@ module Sentry
|
|
|
30
30
|
encoding = GZIP_ENCODING
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
headers = {
|
|
34
|
+
'Content-Type' => CONTENT_TYPE,
|
|
35
|
+
'Content-Encoding' => encoding,
|
|
36
|
+
'X-Sentry-Auth' => generate_auth_header,
|
|
37
|
+
'User-Agent' => USER_AGENT
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
response = conn.start do |http|
|
|
41
|
+
request = ::Net::HTTP::Post.new(@endpoint, headers)
|
|
42
|
+
request.body = data
|
|
43
|
+
http.request(request)
|
|
38
44
|
end
|
|
39
45
|
|
|
40
|
-
if
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
if response.code.match?(/\A2\d{2}/)
|
|
47
|
+
if has_rate_limited_header?(response)
|
|
48
|
+
handle_rate_limited_response(response)
|
|
49
|
+
end
|
|
50
|
+
else
|
|
51
|
+
error_info = "the server responded with status #{response.code}"
|
|
45
52
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
handle_rate_limited_response(e.response[:headers])
|
|
53
|
+
if response.code == "429"
|
|
54
|
+
handle_rate_limited_response(response)
|
|
49
55
|
else
|
|
50
|
-
error_info += "\nbody: #{
|
|
51
|
-
error_info += " Error in headers is: #{
|
|
56
|
+
error_info += "\nbody: #{response.body}"
|
|
57
|
+
error_info += " Error in headers is: #{response['x-sentry-error']}" if response['x-sentry-error']
|
|
52
58
|
end
|
|
53
|
-
end
|
|
54
59
|
|
|
55
|
-
|
|
60
|
+
raise Sentry::ExternalError, error_info
|
|
61
|
+
end
|
|
62
|
+
rescue SocketError => e
|
|
63
|
+
raise Sentry::ExternalError.new(e.message)
|
|
56
64
|
end
|
|
57
65
|
|
|
58
66
|
private
|
|
@@ -120,31 +128,40 @@ module Sentry
|
|
|
120
128
|
end
|
|
121
129
|
|
|
122
130
|
def set_conn
|
|
123
|
-
server = @dsn.server
|
|
131
|
+
server = URI(@dsn.server)
|
|
124
132
|
|
|
125
133
|
log_debug("Sentry HTTP Transport connecting to #{server}")
|
|
126
134
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
builder.response :raise_error
|
|
130
|
-
builder.options.merge! faraday_opts
|
|
131
|
-
builder.headers[:user_agent] = "sentry-ruby/#{Sentry::VERSION}"
|
|
132
|
-
builder.adapter(*adapter)
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
+
use_ssl = server.scheme == "https"
|
|
136
|
+
port = use_ssl ? 443 : 80
|
|
135
137
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
connection =
|
|
139
|
+
if proxy = @transport_configuration.proxy
|
|
140
|
+
::Net::HTTP.new(server.hostname, port, proxy[:uri].hostname, proxy[:uri].port, proxy[:user], proxy[:password])
|
|
141
|
+
else
|
|
142
|
+
::Net::HTTP.new(server.hostname, port, nil)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
connection.use_ssl = use_ssl
|
|
146
|
+
connection.read_timeout = @transport_configuration.timeout
|
|
147
|
+
connection.write_timeout = @transport_configuration.timeout if connection.respond_to?(:write_timeout)
|
|
148
|
+
connection.open_timeout = @transport_configuration.open_timeout
|
|
149
|
+
|
|
150
|
+
ssl_configuration.each do |key, value|
|
|
151
|
+
connection.send("#{key}=", value)
|
|
140
152
|
end
|
|
153
|
+
|
|
154
|
+
connection
|
|
141
155
|
end
|
|
142
156
|
|
|
143
157
|
def ssl_configuration
|
|
144
|
-
{
|
|
158
|
+
configuration = {
|
|
145
159
|
verify: @transport_configuration.ssl_verification,
|
|
146
160
|
ca_file: @transport_configuration.ssl_ca_file
|
|
147
161
|
}.merge(@transport_configuration.ssl || {})
|
|
162
|
+
|
|
163
|
+
configuration[:verify_mode] = configuration.delete(:verify) ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE
|
|
164
|
+
configuration
|
|
148
165
|
end
|
|
149
166
|
end
|
|
150
167
|
end
|
data/lib/sentry/version.rb
CHANGED
data/sentry-ruby-core.gemspec
CHANGED
data/sentry-ruby.gemspec
CHANGED
|
@@ -18,6 +18,5 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/CHANGELOG.md"
|
|
19
19
|
|
|
20
20
|
spec.add_dependency "sentry-ruby-core", Sentry::VERSION
|
|
21
|
-
spec.add_dependency "faraday", "~> 1.0"
|
|
22
21
|
spec.add_dependency "concurrent-ruby", '~> 1.0', '>= 1.0.2'
|
|
23
22
|
end
|
metadata
CHANGED
|
@@ -1,29 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sentry-ruby-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 5.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sentry Team
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-01-
|
|
11
|
+
date: 2022-01-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: faraday
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
27
13
|
- !ruby/object:Gem::Dependency
|
|
28
14
|
name: concurrent-ruby
|
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|