wakame-dolphin 0.0.4 → 0.0.5
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 +7 -0
- data/bin/dolphin_server +3 -0
- data/lib/dolphin/request_handler.rb +64 -22
- data/lib/dolphin/version.rb +1 -1
- data/spec/files/endpoint/event_spec.rb +13 -1
- data/wakame-dolphin.gemspec +1 -0
- metadata +21 -39
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ed5802b5b504f438ce7596102702118fd3c66285
|
4
|
+
data.tar.gz: 91ae217a6baad856c0b41e08efef0fb40d8ee0dd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c1d2b450bcf024c52d91e493bda81a7583c788f7f50617679d0c564e4665d55c3b7dd705084f0ca996b1cdfed9fe92ace77948ccba6b470175eb6c75ba7cd127
|
7
|
+
data.tar.gz: e6ab15f45ab3468d290b8df5f95be44a9b80e4b248f22dd635d8d451fbba5abbb6ef3ef4b9ca1c0a88b92f6ee83fc999fa5025b49ee6eaf2f904a47bd7a44edc
|
data/bin/dolphin_server
CHANGED
@@ -18,7 +18,13 @@ module Dolphin
|
|
18
18
|
Celluloid::Actor[:request_handler_rack_pool] = ::Reel::RackWorker.pool(size: options[:workers], args: [self])
|
19
19
|
|
20
20
|
::Reel::Server.supervise_as(:request_handler, options[:host], options[:port]) do |connection|
|
21
|
-
|
21
|
+
begin
|
22
|
+
Celluloid::Actor[:request_handler_rack_pool].handle(connection.detach)
|
23
|
+
rescue => e
|
24
|
+
|
25
|
+
# Doesn't ouput error log because log output from reel.
|
26
|
+
connection.close
|
27
|
+
end
|
22
28
|
end
|
23
29
|
logger :info, "Running on ruby #{RUBY_VERSION} with selected #{Celluloid::task_class}"
|
24
30
|
logger :info, "Listening on http://#{options[:host]}:#{options[:port]}"
|
@@ -29,15 +35,44 @@ module Dolphin
|
|
29
35
|
Celluloid::Actor[:request_handler_rack_pool].terminate!
|
30
36
|
end
|
31
37
|
end
|
32
|
-
|
38
|
+
|
33
39
|
class RequestApp < Sinatra::Base
|
34
40
|
include Dolphin::Util
|
35
41
|
helpers Dolphin::Helpers::RequestHelper
|
36
42
|
register Sinatra::RespondWith
|
37
|
-
|
38
43
|
respond_to :json
|
44
|
+
set :show_exceptions, false
|
45
|
+
|
46
|
+
# Rack middleware that rejects the request with unsupported content type.
|
47
|
+
# Returns 415 (Unsupported Media Type) for the unsupported request.
|
48
|
+
#
|
49
|
+
# Rack's nested param parser gets crashed from the request of
|
50
|
+
# incompatible header and body pair. so this middleware validates the request
|
51
|
+
# earlier than the parser runs.
|
52
|
+
class ValidateContentType
|
53
|
+
def initialize(app, content_types=[])
|
54
|
+
@app = app
|
55
|
+
@content_types = content_types
|
56
|
+
end
|
57
|
+
|
58
|
+
def call(env)
|
59
|
+
if env['REQUEST_METHOD'] == 'POST'
|
60
|
+
unless @content_types.find{ |c| c.downcase == env['CONTENT_TYPE'].downcase }
|
61
|
+
return [415,
|
62
|
+
{'Content-Type'=>'application/json'},
|
63
|
+
[MultiJson.dump({
|
64
|
+
"message" => "Unsupported Content Type: #{env['CONTENT_TYPE']}"
|
65
|
+
})]
|
66
|
+
]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
@app.call(env)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
use ValidateContentType, ['application/json', 'text/json'].freeze
|
73
|
+
|
39
74
|
GET_EVENT_LIMIT = 3000.freeze
|
40
|
-
|
75
|
+
|
41
76
|
before do
|
42
77
|
logger :info, {
|
43
78
|
:host => request.host,
|
@@ -48,27 +83,34 @@ module Dolphin
|
|
48
83
|
|
49
84
|
if request.post?
|
50
85
|
v = request.body
|
51
|
-
|
86
|
+
begin
|
87
|
+
@params = MultiJson.load(v)
|
88
|
+
rescue => e
|
89
|
+
raise e.message.split(':')[1].strip!
|
90
|
+
end
|
52
91
|
elsif request.get?
|
53
92
|
@params = request.params
|
54
93
|
end
|
55
94
|
end
|
56
95
|
|
57
|
-
error(RuntimeError) do
|
96
|
+
error(RuntimeError) do |e|
|
58
97
|
status(400)
|
59
|
-
|
98
|
+
response_params = {
|
99
|
+
:message => e.message
|
100
|
+
}
|
101
|
+
respond_with response_params
|
60
102
|
end
|
61
103
|
|
62
104
|
post '/events' do
|
63
105
|
raise 'Nothing parameters.' if @params.blank?
|
64
|
-
|
106
|
+
|
65
107
|
event = {}
|
66
108
|
event[:notification_id] = @notification_id
|
67
109
|
event[:message_type] = @message_type
|
68
110
|
event[:messages] = @params
|
69
|
-
|
111
|
+
|
70
112
|
events = worker.future.put_event(event)
|
71
|
-
|
113
|
+
|
72
114
|
# always success because put_event is async action.
|
73
115
|
response_params = {
|
74
116
|
:message => 'OK'
|
@@ -79,15 +121,15 @@ module Dolphin
|
|
79
121
|
get '/events' do
|
80
122
|
limit = @params['limit'].blank? ? GET_EVENT_LIMIT : @params['limit'].to_i
|
81
123
|
raise "Requested over the limit. Limited to #{GET_EVENT_LIMIT}" if limit > GET_EVENT_LIMIT
|
82
|
-
|
124
|
+
|
83
125
|
event = {}
|
84
126
|
event[:count] = limit
|
85
127
|
event[:start_time] = parse_time(@params['start_time']) unless @params['start_time'].blank?
|
86
128
|
event[:start_id] = @params['start_id'] unless @params['start_id'].blank?
|
87
|
-
|
129
|
+
|
88
130
|
events = worker.get_event(event)
|
89
131
|
raise events.message if events.fail?
|
90
|
-
|
132
|
+
|
91
133
|
response_params = {
|
92
134
|
:results => events.message,
|
93
135
|
:message => 'OK'
|
@@ -98,14 +140,14 @@ module Dolphin
|
|
98
140
|
|
99
141
|
get '/notifications' do
|
100
142
|
required 'notification_id'
|
101
|
-
|
143
|
+
|
102
144
|
notification = {}
|
103
145
|
notification[:id] = @notification_id
|
104
|
-
|
146
|
+
|
105
147
|
result = worker.get_notification(notification)
|
106
148
|
raise result.message if result.fail?
|
107
149
|
raise "Not found notification id" if result.message.nil?
|
108
|
-
|
150
|
+
|
109
151
|
response_params = {
|
110
152
|
:results => result.message,
|
111
153
|
:message => 'OK'
|
@@ -116,16 +158,16 @@ module Dolphin
|
|
116
158
|
post '/notifications' do
|
117
159
|
required 'notification_id'
|
118
160
|
raise 'Nothing parameters.' if @params.blank?
|
119
|
-
|
161
|
+
|
120
162
|
unsupported_sender_types = @params.keys - Sender::TYPES
|
121
163
|
raise "Unsuppoted sender types: #{unsupported_sender_types.join(',')}" unless unsupported_sender_types.blank?
|
122
|
-
|
164
|
+
|
123
165
|
notification = {}
|
124
166
|
notification[:id] = @notification_id
|
125
167
|
notification[:methods] = @params
|
126
168
|
result = worker.put_notification(notification)
|
127
169
|
raise result.message if result.fail?
|
128
|
-
|
170
|
+
|
129
171
|
response_params = {
|
130
172
|
:message => 'OK'
|
131
173
|
}
|
@@ -134,13 +176,13 @@ module Dolphin
|
|
134
176
|
|
135
177
|
delete '/notifications' do
|
136
178
|
required 'notification_id'
|
137
|
-
|
179
|
+
|
138
180
|
notification = {}
|
139
181
|
notification[:id] = @notification_id
|
140
|
-
|
182
|
+
|
141
183
|
result = worker.delete_notification(notification)
|
142
184
|
raise result.message if result.fail?
|
143
|
-
|
185
|
+
|
144
186
|
response_params = {
|
145
187
|
:message => 'OK'
|
146
188
|
}
|
data/lib/dolphin/version.rb
CHANGED
@@ -117,7 +117,19 @@ describe 'Event API' do
|
|
117
117
|
expect(res['message']).to eql 'OK'
|
118
118
|
end
|
119
119
|
|
120
|
+
it 'expect to post sending content-type missing' do
|
121
|
+
content_type = 'application/x-www-form-urlencoded'
|
122
|
+
res = post('/events',
|
123
|
+
:headers => {
|
124
|
+
'Content-Type' => content_type,
|
125
|
+
},
|
126
|
+
:body => {
|
127
|
+
'message' => 'Alert!!!!'
|
128
|
+
}.to_json)
|
129
|
+
|
130
|
+
expect(res['message']).to eql "Unsupported Content Type: #{content_type}"
|
131
|
+
end
|
120
132
|
before(:all) do
|
121
133
|
FileUtils.rm(@temporary_mail) if File.exists?(@temporary_mail)
|
122
134
|
end
|
123
|
-
end
|
135
|
+
end
|
data/wakame-dolphin.gemspec
CHANGED
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wakame-dolphin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.5
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- axsh Ltd.
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-20 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: reel
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - '='
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - '='
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: actionmailer
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - '='
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - '='
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: ltsv
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - '='
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - '='
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,7 +55,6 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: extlib
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,7 +69,6 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: multi_json
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - '='
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,7 +76,6 @@ dependencies:
|
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - '='
|
92
81
|
- !ruby/object:Gem::Version
|
@@ -94,7 +83,6 @@ dependencies:
|
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: rake
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - '='
|
100
88
|
- !ruby/object:Gem::Version
|
@@ -102,7 +90,6 @@ dependencies:
|
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - '='
|
108
95
|
- !ruby/object:Gem::Version
|
@@ -110,7 +97,6 @@ dependencies:
|
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: parseconfig
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
101
|
- - '='
|
116
102
|
- !ruby/object:Gem::Version
|
@@ -118,7 +104,6 @@ dependencies:
|
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
108
|
- - '='
|
124
109
|
- !ruby/object:Gem::Version
|
@@ -126,7 +111,6 @@ dependencies:
|
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: erubis
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
115
|
- - '='
|
132
116
|
- !ruby/object:Gem::Version
|
@@ -134,7 +118,6 @@ dependencies:
|
|
134
118
|
type: :runtime
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
122
|
- - '='
|
140
123
|
- !ruby/object:Gem::Version
|
@@ -142,7 +125,6 @@ dependencies:
|
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: mail-iso-2022-jp
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
129
|
- - '='
|
148
130
|
- !ruby/object:Gem::Version
|
@@ -150,7 +132,6 @@ dependencies:
|
|
150
132
|
type: :runtime
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
136
|
- - '='
|
156
137
|
- !ruby/object:Gem::Version
|
@@ -158,7 +139,6 @@ dependencies:
|
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: simple_uuid
|
160
141
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
142
|
requirements:
|
163
143
|
- - '='
|
164
144
|
- !ruby/object:Gem::Version
|
@@ -166,7 +146,6 @@ dependencies:
|
|
166
146
|
type: :runtime
|
167
147
|
prerelease: false
|
168
148
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
149
|
requirements:
|
171
150
|
- - '='
|
172
151
|
- !ruby/object:Gem::Version
|
@@ -174,7 +153,6 @@ dependencies:
|
|
174
153
|
- !ruby/object:Gem::Dependency
|
175
154
|
name: sinatra
|
176
155
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
156
|
requirements:
|
179
157
|
- - ~>
|
180
158
|
- !ruby/object:Gem::Version
|
@@ -182,7 +160,6 @@ dependencies:
|
|
182
160
|
type: :runtime
|
183
161
|
prerelease: false
|
184
162
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
163
|
requirements:
|
187
164
|
- - ~>
|
188
165
|
- !ruby/object:Gem::Version
|
@@ -190,7 +167,6 @@ dependencies:
|
|
190
167
|
- !ruby/object:Gem::Dependency
|
191
168
|
name: sinatra-contrib
|
192
169
|
requirement: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
170
|
requirements:
|
195
171
|
- - ~>
|
196
172
|
- !ruby/object:Gem::Version
|
@@ -198,7 +174,6 @@ dependencies:
|
|
198
174
|
type: :runtime
|
199
175
|
prerelease: false
|
200
176
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
177
|
requirements:
|
203
178
|
- - ~>
|
204
179
|
- !ruby/object:Gem::Version
|
@@ -206,7 +181,6 @@ dependencies:
|
|
206
181
|
- !ruby/object:Gem::Dependency
|
207
182
|
name: celluloid
|
208
183
|
requirement: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
184
|
requirements:
|
211
185
|
- - '='
|
212
186
|
- !ruby/object:Gem::Version
|
@@ -214,7 +188,6 @@ dependencies:
|
|
214
188
|
type: :runtime
|
215
189
|
prerelease: false
|
216
190
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
191
|
requirements:
|
219
192
|
- - '='
|
220
193
|
- !ruby/object:Gem::Version
|
@@ -222,7 +195,6 @@ dependencies:
|
|
222
195
|
- !ruby/object:Gem::Dependency
|
223
196
|
name: celluloid-io
|
224
197
|
requirement: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
198
|
requirements:
|
227
199
|
- - '='
|
228
200
|
- !ruby/object:Gem::Version
|
@@ -230,7 +202,6 @@ dependencies:
|
|
230
202
|
type: :runtime
|
231
203
|
prerelease: false
|
232
204
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
none: false
|
234
205
|
requirements:
|
235
206
|
- - '='
|
236
207
|
- !ruby/object:Gem::Version
|
@@ -238,7 +209,6 @@ dependencies:
|
|
238
209
|
- !ruby/object:Gem::Dependency
|
239
210
|
name: nio4r
|
240
211
|
requirement: !ruby/object:Gem::Requirement
|
241
|
-
none: false
|
242
212
|
requirements:
|
243
213
|
- - '='
|
244
214
|
- !ruby/object:Gem::Version
|
@@ -246,11 +216,24 @@ dependencies:
|
|
246
216
|
type: :runtime
|
247
217
|
prerelease: false
|
248
218
|
version_requirements: !ruby/object:Gem::Requirement
|
249
|
-
none: false
|
250
219
|
requirements:
|
251
220
|
- - '='
|
252
221
|
- !ruby/object:Gem::Version
|
253
222
|
version: 0.4.3
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: http
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - '='
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: 0.4.0
|
230
|
+
type: :runtime
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - '='
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: 0.4.0
|
254
237
|
description: notification service
|
255
238
|
email:
|
256
239
|
- dev@axsh.net
|
@@ -319,27 +302,26 @@ files:
|
|
319
302
|
homepage: https://github.com/axsh/wakame-dolphin
|
320
303
|
licenses:
|
321
304
|
- LGPL 3.0
|
305
|
+
metadata: {}
|
322
306
|
post_install_message:
|
323
307
|
rdoc_options: []
|
324
308
|
require_paths:
|
325
309
|
- - lib
|
326
310
|
required_ruby_version: !ruby/object:Gem::Requirement
|
327
|
-
none: false
|
328
311
|
requirements:
|
329
|
-
- -
|
312
|
+
- - '>='
|
330
313
|
- !ruby/object:Gem::Version
|
331
314
|
version: 1.9.3
|
332
315
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
333
|
-
none: false
|
334
316
|
requirements:
|
335
|
-
- -
|
317
|
+
- - '>='
|
336
318
|
- !ruby/object:Gem::Version
|
337
319
|
version: 1.3.6
|
338
320
|
requirements: []
|
339
321
|
rubyforge_project:
|
340
|
-
rubygems_version:
|
322
|
+
rubygems_version: 2.0.3
|
341
323
|
signing_key:
|
342
|
-
specification_version:
|
324
|
+
specification_version: 4
|
343
325
|
summary: notification service
|
344
326
|
test_files:
|
345
327
|
- spec/files/cassandra_models_spec.rb
|