opener-webservice 2.1.3 → 2.2.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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60efcf46d3e5c00cd804fbaace65fe4ac22d5a42
|
4
|
+
data.tar.gz: 2c59b1584c51702482b03a6c86d60939a2b2f0dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa3ffd21a7473bd15a595466709b01c7f84210c816d5746c36e138f43d5aee591c85f741e54af6d2d474cceab6ddd919c6f845d1c94d0b7ceeca511900bc6919
|
7
|
+
data.tar.gz: 7747fcad14b44ffd8afaab6ca0d14a307ca5c3c0f74c90e294f384f3859250f43513ed250bfdd62ce21e2a2081f3832c9e4a5fb482d049e5298732ef50f747c1
|
data/lib/opener/webservice.rb
CHANGED
@@ -68,6 +68,15 @@ module Opener
|
|
68
68
|
return !!ENV['ROLLBAR_TOKEN']
|
69
69
|
end
|
70
70
|
|
71
|
+
##
|
72
|
+
# Returns `true` if New Relic monitoring should be enabled.
|
73
|
+
#
|
74
|
+
# @return [TrueClass|FalseClass]
|
75
|
+
#
|
76
|
+
def self.newrelic?
|
77
|
+
return !!ENV['NEWRELIC_TOKEN']
|
78
|
+
end
|
79
|
+
|
71
80
|
##
|
72
81
|
# Configures Rollbar.
|
73
82
|
#
|
@@ -56,7 +56,12 @@ module Opener
|
|
56
56
|
end
|
57
57
|
|
58
58
|
error do
|
59
|
-
Rollbar.
|
59
|
+
Rollbar.error(
|
60
|
+
env['sinatra.error'],
|
61
|
+
:parameters => Transaction.current.parameters
|
62
|
+
)
|
63
|
+
|
64
|
+
Transaction.reset_current
|
60
65
|
|
61
66
|
halt(
|
62
67
|
500,
|
@@ -145,6 +150,8 @@ module Opener
|
|
145
150
|
|
146
151
|
content_type(ctype)
|
147
152
|
|
153
|
+
Transaction.reset_current
|
154
|
+
|
148
155
|
return output
|
149
156
|
end
|
150
157
|
|
@@ -182,6 +189,8 @@ module Opener
|
|
182
189
|
# @return [Array]
|
183
190
|
#
|
184
191
|
def analyze(options)
|
192
|
+
add_transaction_parameters(options)
|
193
|
+
|
185
194
|
comp_options = InputSanitizer.new.whitelist_options(
|
186
195
|
options,
|
187
196
|
self.class.accepted_params
|
@@ -262,6 +271,22 @@ module Opener
|
|
262
271
|
CallbackHandler.new.post(next_url, new_payload)
|
263
272
|
end
|
264
273
|
|
274
|
+
##
|
275
|
+
# @param [Hash] options
|
276
|
+
#
|
277
|
+
def add_transaction_parameters(options)
|
278
|
+
# If raw input is given we'll trim it so the payload isn't too large for
|
279
|
+
# Rollbar/New Relic. This uses Hash#merge so we don't modify the
|
280
|
+
# original options variable.
|
281
|
+
if options['input']
|
282
|
+
options = options.merge(
|
283
|
+
'input' => options['input'].byteslice(0, 256)
|
284
|
+
)
|
285
|
+
end
|
286
|
+
|
287
|
+
Transaction.current.add_parameters(options)
|
288
|
+
end
|
289
|
+
|
265
290
|
##
|
266
291
|
# Returns a Hash containing the parameters from a JSON payload. The keys
|
267
292
|
# of this Hash are returned as _strings_ to prevent Symbol DOS attacks.
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Opener
|
2
|
+
module Webservice
|
3
|
+
##
|
4
|
+
# Class for storing information of a single transaction in a thread.
|
5
|
+
#
|
6
|
+
# @!attribute [r] parameters
|
7
|
+
# @return [Hash]
|
8
|
+
#
|
9
|
+
class Transaction
|
10
|
+
attr_reader :parameters
|
11
|
+
|
12
|
+
##
|
13
|
+
# The name of the key to store the current transaction in.
|
14
|
+
#
|
15
|
+
# @return [Symbol]
|
16
|
+
#
|
17
|
+
THREAD_KEY = :opener_webservices_transaction
|
18
|
+
|
19
|
+
##
|
20
|
+
# Returns the current transaction.
|
21
|
+
#
|
22
|
+
# @return [Opener::Daemons::Transaction]
|
23
|
+
#
|
24
|
+
def self.current
|
25
|
+
return Thread.current[THREAD_KEY] ||= new
|
26
|
+
end
|
27
|
+
|
28
|
+
##
|
29
|
+
# Removes the current transaction
|
30
|
+
#
|
31
|
+
def self.reset_current
|
32
|
+
Thread.current[THREAD_KEY] = nil
|
33
|
+
end
|
34
|
+
|
35
|
+
def initialize
|
36
|
+
@parameters = {}
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# Merges the given parameters with the existing ones.
|
41
|
+
#
|
42
|
+
# If New Relic is enabled the parameters are also added to the current
|
43
|
+
# New Relic transaction.
|
44
|
+
#
|
45
|
+
# @param [Hash] parameters
|
46
|
+
#
|
47
|
+
def add_parameters(parameters = {})
|
48
|
+
@parameters = @parameters.merge(parameters)
|
49
|
+
|
50
|
+
if Configuration.newrelic?
|
51
|
+
NewRelic::Agent.add_custom_parameters(parameters)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end # Transaction
|
55
|
+
end # Webservice
|
56
|
+
end # Opener
|
data/opener-webservice.gemspec
CHANGED
@@ -18,11 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
]).select { |file| File.file?(file) }
|
19
19
|
|
20
20
|
spec.add_dependency 'sinatra', '~> 1.4.3'
|
21
|
-
spec.add_dependency 'uuidtools'
|
22
21
|
spec.add_dependency 'json'
|
23
22
|
spec.add_dependency 'opener-callback-handler', '~> 1.0'
|
24
23
|
spec.add_dependency 'httpclient', ['~> 2.0', '>= 2.5.3.3']
|
25
|
-
spec.add_dependency 'opener-core', '~> 2.
|
24
|
+
spec.add_dependency 'opener-core', '~> 2.3'
|
26
25
|
spec.add_dependency 'puma'
|
27
26
|
spec.add_dependency 'slop', '~> 3.0'
|
28
27
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opener-webservice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- development@olery.com
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.4.3
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: uuidtools
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: json
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,14 +78,14 @@ dependencies:
|
|
92
78
|
requirements:
|
93
79
|
- - "~>"
|
94
80
|
- !ruby/object:Gem::Version
|
95
|
-
version: '2.
|
81
|
+
version: '2.3'
|
96
82
|
type: :runtime
|
97
83
|
prerelease: false
|
98
84
|
version_requirements: !ruby/object:Gem::Requirement
|
99
85
|
requirements:
|
100
86
|
- - "~>"
|
101
87
|
- !ruby/object:Gem::Version
|
102
|
-
version: '2.
|
88
|
+
version: '2.3'
|
103
89
|
- !ruby/object:Gem::Dependency
|
104
90
|
name: puma
|
105
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -242,6 +228,7 @@ files:
|
|
242
228
|
- lib/opener/webservice/input_sanitizer.rb
|
243
229
|
- lib/opener/webservice/option_parser.rb
|
244
230
|
- lib/opener/webservice/server.rb
|
231
|
+
- lib/opener/webservice/transaction.rb
|
245
232
|
- lib/opener/webservice/uploader.rb
|
246
233
|
- lib/opener/webservice/version.rb
|
247
234
|
- opener-webservice.gemspec
|