alephant-publisher-request 0.2.2 → 0.2.3
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/alephant/publisher/request.rb +5 -1
- data/lib/alephant/publisher/request/connection.rb +25 -12
- data/lib/alephant/publisher/request/data_mapper_factory.rb +11 -8
- data/lib/alephant/publisher/request/log_helper.rb +15 -0
- data/lib/alephant/publisher/request/version.rb +1 -1
- metadata +43 -42
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e649b5dacc3ea7947fc3e5847443aba993fe68d
|
4
|
+
data.tar.gz: a55112f022d2af134ba5e6828cbf7b3059c00d99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc054a9c77582ab4e2ef1866dd274912001713b1c8df079fbe4ad556af525c8bc33885231b460094b37074931a478cc4c2e5c7a2d49ad1449781d4c882257561
|
7
|
+
data.tar.gz: a80e4a46c3bfd9870ae4f04f90b2f5a9743117f07fa66fcc08718378dbc3524badb778ed4374c2e92705db22b6a86d6409a391c1bb00fa97c857281000525e6b
|
@@ -34,8 +34,11 @@ module Alephant
|
|
34
34
|
when /status$/
|
35
35
|
response = Rack::Response.new('ok', 200, DEFAULT_CONTENT_TYPE)
|
36
36
|
when /component\/(?<id>[^\/]+)$/
|
37
|
+
component_id = $~['id']
|
38
|
+
logger.info "Component request for: #{component_id} with options: #{req.params.inspect}"
|
39
|
+
|
37
40
|
response = Rack::Response.new(
|
38
|
-
template_data(
|
41
|
+
template_data(component_id, req.params),
|
39
42
|
200,
|
40
43
|
DEFAULT_CONTENT_TYPE
|
41
44
|
)
|
@@ -68,6 +71,7 @@ module Alephant
|
|
68
71
|
end
|
69
72
|
|
70
73
|
def error_response(e = '', code = 500)
|
74
|
+
logger.error "Publisher::Request#error_response: #{e.message}"
|
71
75
|
logger.metric(:name => "PublisherRequestErrorResponseStatus#{code}", :unit => "Count", :value => 1)
|
72
76
|
message = opts.fetch(:debug, false) ? e.message : ''
|
73
77
|
Rack::Response.new(message, code, DEFAULT_CONTENT_TYPE).finish
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require "alephant/logger"
|
2
|
+
require "alephant/publisher/request/log_helper"
|
2
3
|
|
3
4
|
module Alephant
|
4
5
|
module Publisher
|
5
6
|
module Request
|
6
7
|
class Connection
|
7
8
|
include Logger
|
9
|
+
include Alephant::Publisher::Request::LogHelper
|
8
10
|
attr_reader :driver
|
9
11
|
|
10
12
|
def initialize(driver)
|
@@ -12,24 +14,35 @@ module Alephant
|
|
12
14
|
end
|
13
15
|
|
14
16
|
def get(uri)
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
raise InvalidApiStatus, response.status unless response.status == 200
|
19
|
-
JSON::parse(response.body, :symbolize_names => true)
|
20
|
-
rescue Faraday::ConnectionFailed
|
21
|
-
logger.metric(:name => "PublisherRequestDataMapperConnectionFailed", :unit => "Count", :value => 1)
|
17
|
+
JSON::parse(request(uri).body, :symbolize_names => true)
|
18
|
+
rescue Faraday::ConnectionFailed => e
|
19
|
+
log_error_with_metric(e, 'DataMapper#request', uri, "PublisherRequestDataMapperConnectionFailed")
|
22
20
|
raise ConnectionFailed
|
23
|
-
rescue JSON::ParserError
|
24
|
-
logger.metric(:name => "PublisherRequestDataMapperInvalidApiResponse", :unit => "Count", :value => 1)
|
25
|
-
raise InvalidApiResponse, "JSON parsing error: #{response.body}"
|
26
21
|
rescue InvalidApiStatus => e
|
27
|
-
|
22
|
+
log_error_with_metric(e, 'DataMapper#request', uri, "PublisherRequestDataMapperInvalidStatus#{e.status}")
|
28
23
|
raise e
|
24
|
+
rescue JSON::ParserError => e
|
25
|
+
log_error_with_metric(e, 'DataMapper#get', uri, "PublisherRequestDataMapperInvalidApiResponse")
|
26
|
+
raise InvalidApiResponse, "JSON parsing error: #{response.body}"
|
29
27
|
rescue StandardError => e
|
30
|
-
|
28
|
+
log_error_with_metric(e, 'DataMapper#get', uri, "PublisherRequestDataMapperApiError")
|
31
29
|
raise ApiError, e.message
|
32
30
|
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def request(uri)
|
35
|
+
before = Time.new
|
36
|
+
logger.info "Publisher::Request::DataMapper#request: uri: #{uri}"
|
37
|
+
|
38
|
+
driver.get(uri).tap do |response|
|
39
|
+
response_time = Time.new - before
|
40
|
+
logger.metric(:name => "PublisherRequestDataMapperRequestHTTPTime", :unit => 'Seconds', :value => response_time)
|
41
|
+
logger.info "Publisher::Request::DataMapper#request: API response time: #{response_time}"
|
42
|
+
logger.info "Publisher::Request::DataMapper#request: status returned: #{response.status} for #{uri}"
|
43
|
+
raise InvalidApiStatus, response.status unless response.status == 200
|
44
|
+
end
|
45
|
+
end
|
33
46
|
end
|
34
47
|
end
|
35
48
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'alephant/
|
1
|
+
require 'alephant/publisher/request/log_helper'
|
2
2
|
|
3
3
|
module Alephant
|
4
4
|
module Publisher
|
5
5
|
module Request
|
6
6
|
class DataMapperFactory
|
7
|
-
include
|
7
|
+
include Alephant::Publisher::Request::LogHelper
|
8
8
|
|
9
9
|
attr_reader :connection, :base_path
|
10
10
|
|
@@ -19,14 +19,14 @@ module Alephant
|
|
19
19
|
|
20
20
|
klass = mapper_class_for(component_id)
|
21
21
|
klass.new(connection, context)
|
22
|
-
rescue LoadError
|
23
|
-
|
22
|
+
rescue LoadError => e
|
23
|
+
log_error_with_metric(e, component_id, "PublisherRequestDataMapperFactoryInvalidComponentName")
|
24
24
|
raise InvalidComponentName, "Invalid component name: #{component_id}"
|
25
|
-
rescue NameError
|
26
|
-
|
25
|
+
rescue NameError => e
|
26
|
+
log_error_with_metric(e, component_id, "PublisherRequestDataMapperFactoryInvalidComponentClassName")
|
27
27
|
raise InvalidComponentClassName, "Invalid class name #{klass}"
|
28
|
-
rescue
|
29
|
-
|
28
|
+
rescue => e
|
29
|
+
log_error_with_metric(e, component_id, "PublisherRequestDataMapperFactoryInvalidComponent")
|
30
30
|
raise InvalidComponent, "Name: #{component_id}, Class: #{klass}"
|
31
31
|
end
|
32
32
|
|
@@ -44,6 +44,9 @@ module Alephant
|
|
44
44
|
Object.const_get("#{camalize component_id}Mapper")
|
45
45
|
end
|
46
46
|
|
47
|
+
def log_error(e, component_id, metric)
|
48
|
+
log_error_with_metric(e, 'DataMapperFactory#create', component_id, metric)
|
49
|
+
end
|
47
50
|
end
|
48
51
|
end
|
49
52
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'alephant/logger'
|
2
|
+
|
3
|
+
module Alephant
|
4
|
+
module Publisher
|
5
|
+
module Request
|
6
|
+
module LogHelper
|
7
|
+
include Logger
|
8
|
+
def log_error_with_metric(e, method, message, metric = nil, metric_count = 1)
|
9
|
+
logger.error "Publisher::Request::#{method}: '#{e.class}(#{e.message})' exception raised for: #{message}"
|
10
|
+
logger.metric(:name => metric, :unit => "Count", :value => metric_count) unless metric.nil?
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,225 +1,225 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alephant-publisher-request
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Integralist
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
version_requirements: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ~>
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.5'
|
20
14
|
requirement: !ruby/object:Gem::Requirement
|
21
15
|
requirements:
|
22
16
|
- - ~>
|
23
17
|
- !ruby/object:Gem::Version
|
24
18
|
version: '1.5'
|
19
|
+
name: bundler
|
25
20
|
prerelease: false
|
26
21
|
type: :development
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rspec
|
29
22
|
version_requirements: !ruby/object:Gem::Requirement
|
30
23
|
requirements:
|
31
|
-
- -
|
24
|
+
- - ~>
|
32
25
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
26
|
+
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
34
28
|
requirement: !ruby/object:Gem::Requirement
|
35
29
|
requirements:
|
36
30
|
- - '>='
|
37
31
|
- !ruby/object:Gem::Version
|
38
32
|
version: '0'
|
33
|
+
name: rspec
|
39
34
|
prerelease: false
|
40
35
|
type: :development
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec-nc
|
43
36
|
version_requirements: !ruby/object:Gem::Requirement
|
44
37
|
requirements:
|
45
38
|
- - '>='
|
46
39
|
- !ruby/object:Gem::Version
|
47
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
48
42
|
requirement: !ruby/object:Gem::Requirement
|
49
43
|
requirements:
|
50
44
|
- - '>='
|
51
45
|
- !ruby/object:Gem::Version
|
52
46
|
version: '0'
|
47
|
+
name: rspec-nc
|
53
48
|
prerelease: false
|
54
49
|
type: :development
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: guard
|
57
50
|
version_requirements: !ruby/object:Gem::Requirement
|
58
51
|
requirements:
|
59
52
|
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
62
56
|
requirement: !ruby/object:Gem::Requirement
|
63
57
|
requirements:
|
64
58
|
- - '>='
|
65
59
|
- !ruby/object:Gem::Version
|
66
60
|
version: '0'
|
61
|
+
name: guard
|
67
62
|
prerelease: false
|
68
63
|
type: :development
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: guard-rake
|
71
64
|
version_requirements: !ruby/object:Gem::Requirement
|
72
65
|
requirements:
|
73
66
|
- - '>='
|
74
67
|
- !ruby/object:Gem::Version
|
75
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
76
70
|
requirement: !ruby/object:Gem::Requirement
|
77
71
|
requirements:
|
78
72
|
- - '>='
|
79
73
|
- !ruby/object:Gem::Version
|
80
74
|
version: '0'
|
75
|
+
name: guard-rake
|
81
76
|
prerelease: false
|
82
77
|
type: :development
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: pry
|
85
78
|
version_requirements: !ruby/object:Gem::Requirement
|
86
79
|
requirements:
|
87
80
|
- - '>='
|
88
81
|
- !ruby/object:Gem::Version
|
89
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
90
84
|
requirement: !ruby/object:Gem::Requirement
|
91
85
|
requirements:
|
92
86
|
- - '>='
|
93
87
|
- !ruby/object:Gem::Version
|
94
88
|
version: '0'
|
89
|
+
name: pry
|
95
90
|
prerelease: false
|
96
91
|
type: :development
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rack-test
|
99
92
|
version_requirements: !ruby/object:Gem::Requirement
|
100
93
|
requirements:
|
101
94
|
- - '>='
|
102
95
|
- !ruby/object:Gem::Version
|
103
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
104
98
|
requirement: !ruby/object:Gem::Requirement
|
105
99
|
requirements:
|
106
100
|
- - '>='
|
107
101
|
- !ruby/object:Gem::Version
|
108
102
|
version: '0'
|
103
|
+
name: rack-test
|
109
104
|
prerelease: false
|
110
105
|
type: :development
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: spurious-ruby-awssdk-helper
|
113
106
|
version_requirements: !ruby/object:Gem::Requirement
|
114
107
|
requirements:
|
115
108
|
- - '>='
|
116
109
|
- !ruby/object:Gem::Version
|
117
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
118
112
|
requirement: !ruby/object:Gem::Requirement
|
119
113
|
requirements:
|
120
114
|
- - '>='
|
121
115
|
- !ruby/object:Gem::Version
|
122
116
|
version: '0'
|
117
|
+
name: spurious-ruby-awssdk-helper
|
123
118
|
prerelease: false
|
124
119
|
type: :development
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rake-rspec
|
127
120
|
version_requirements: !ruby/object:Gem::Requirement
|
128
121
|
requirements:
|
129
122
|
- - '>='
|
130
123
|
- !ruby/object:Gem::Version
|
131
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
132
126
|
requirement: !ruby/object:Gem::Requirement
|
133
127
|
requirements:
|
134
128
|
- - '>='
|
135
129
|
- !ruby/object:Gem::Version
|
136
130
|
version: '0'
|
131
|
+
name: rake-rspec
|
137
132
|
prerelease: false
|
138
133
|
type: :development
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rack
|
141
134
|
version_requirements: !ruby/object:Gem::Requirement
|
142
135
|
requirements:
|
143
136
|
- - '>='
|
144
137
|
- !ruby/object:Gem::Version
|
145
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
146
140
|
requirement: !ruby/object:Gem::Requirement
|
147
141
|
requirements:
|
148
142
|
- - '>='
|
149
143
|
- !ruby/object:Gem::Version
|
150
144
|
version: '0'
|
145
|
+
name: rack
|
151
146
|
prerelease: false
|
152
147
|
type: :runtime
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: rake
|
155
148
|
version_requirements: !ruby/object:Gem::Requirement
|
156
149
|
requirements:
|
157
150
|
- - '>='
|
158
151
|
- !ruby/object:Gem::Version
|
159
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
160
154
|
requirement: !ruby/object:Gem::Requirement
|
161
155
|
requirements:
|
162
156
|
- - '>='
|
163
157
|
- !ruby/object:Gem::Version
|
164
158
|
version: '0'
|
159
|
+
name: rake
|
165
160
|
prerelease: false
|
166
161
|
type: :runtime
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: faraday
|
169
162
|
version_requirements: !ruby/object:Gem::Requirement
|
170
163
|
requirements:
|
171
164
|
- - '>='
|
172
165
|
- !ruby/object:Gem::Version
|
173
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
174
168
|
requirement: !ruby/object:Gem::Requirement
|
175
169
|
requirements:
|
176
170
|
- - '>='
|
177
171
|
- !ruby/object:Gem::Version
|
178
172
|
version: '0'
|
173
|
+
name: faraday
|
179
174
|
prerelease: false
|
180
175
|
type: :runtime
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: aws-sdk
|
183
176
|
version_requirements: !ruby/object:Gem::Requirement
|
184
177
|
requirements:
|
185
|
-
- -
|
178
|
+
- - '>='
|
186
179
|
- !ruby/object:Gem::Version
|
187
|
-
version: '
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
188
182
|
requirement: !ruby/object:Gem::Requirement
|
189
183
|
requirements:
|
190
184
|
- - ~>
|
191
185
|
- !ruby/object:Gem::Version
|
192
186
|
version: '1.0'
|
187
|
+
name: aws-sdk
|
193
188
|
prerelease: false
|
194
189
|
type: :runtime
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: alephant-logger
|
197
190
|
version_requirements: !ruby/object:Gem::Requirement
|
198
191
|
requirements:
|
199
|
-
- -
|
192
|
+
- - ~>
|
200
193
|
- !ruby/object:Gem::Version
|
201
|
-
version: '0'
|
194
|
+
version: '1.0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
202
196
|
requirement: !ruby/object:Gem::Requirement
|
203
197
|
requirements:
|
204
198
|
- - '>='
|
205
199
|
- !ruby/object:Gem::Version
|
206
200
|
version: '0'
|
201
|
+
name: alephant-logger
|
207
202
|
prerelease: false
|
208
203
|
type: :runtime
|
209
|
-
- !ruby/object:Gem::Dependency
|
210
|
-
name: alephant-renderer
|
211
204
|
version_requirements: !ruby/object:Gem::Requirement
|
212
205
|
requirements:
|
213
206
|
- - '>='
|
214
207
|
- !ruby/object:Gem::Version
|
215
208
|
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
216
210
|
requirement: !ruby/object:Gem::Requirement
|
217
211
|
requirements:
|
218
212
|
- - '>='
|
219
213
|
- !ruby/object:Gem::Version
|
220
214
|
version: '0'
|
215
|
+
name: alephant-renderer
|
221
216
|
prerelease: false
|
222
217
|
type: :runtime
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - '>='
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
223
|
description: '...'
|
224
224
|
email:
|
225
225
|
- mark.mcdx@gmail.com
|
@@ -241,6 +241,7 @@ files:
|
|
241
241
|
- lib/alephant/publisher/request/data_mapper.rb
|
242
242
|
- lib/alephant/publisher/request/data_mapper_factory.rb
|
243
243
|
- lib/alephant/publisher/request/error.rb
|
244
|
+
- lib/alephant/publisher/request/log_helper.rb
|
244
245
|
- lib/alephant/publisher/request/processor.rb
|
245
246
|
- lib/alephant/publisher/request/processor/base.rb
|
246
247
|
- lib/alephant/publisher/request/version.rb
|