magellan-rails 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +12 -12
- data/lib/magellan/extentions/rails.rb +1 -0
- data/lib/magellan/extentions/rails/application.rb +54 -0
- data/lib/magellan/extentions/rails/engine.rb +1 -1
- data/lib/magellan/rails.rb +2 -0
- data/lib/magellan/rails/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d0de6e82993e776a9176ee74883355927e74455
|
4
|
+
data.tar.gz: dbc15a0c348de7e03f7bd235308fcac8be766b84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f31a049e23ecaa65e0824685ef3d1b8183083bfcde6e9880351524d0a7ada1002db0ee10b1273124cd15f073c2d104f12e0a22f59cbd0e9a33d21e5868023557
|
7
|
+
data.tar.gz: 520c958dfec234f2371614f504cdfd56f3d09d9c959f093ea15189c6774b032019cad3054ec122a63dabd79632c20951c3d449cdc5096034124854c669ffac61
|
data/Gemfile.lock
CHANGED
@@ -8,7 +8,7 @@ GIT
|
|
8
8
|
PATH
|
9
9
|
remote: .
|
10
10
|
specs:
|
11
|
-
magellan-rails (0.0.
|
11
|
+
magellan-rails (0.0.2)
|
12
12
|
bunny
|
13
13
|
json
|
14
14
|
railties (~> 4.1.0)
|
@@ -16,16 +16,16 @@ PATH
|
|
16
16
|
GEM
|
17
17
|
remote: https://rubygems.org/
|
18
18
|
specs:
|
19
|
-
actionpack (4.1.
|
20
|
-
actionview (= 4.1.
|
21
|
-
activesupport (= 4.1.
|
19
|
+
actionpack (4.1.6)
|
20
|
+
actionview (= 4.1.6)
|
21
|
+
activesupport (= 4.1.6)
|
22
22
|
rack (~> 1.5.2)
|
23
23
|
rack-test (~> 0.6.2)
|
24
|
-
actionview (4.1.
|
25
|
-
activesupport (= 4.1.
|
24
|
+
actionview (4.1.6)
|
25
|
+
activesupport (= 4.1.6)
|
26
26
|
builder (~> 3.1)
|
27
27
|
erubis (~> 2.7.0)
|
28
|
-
activesupport (4.1.
|
28
|
+
activesupport (4.1.6)
|
29
29
|
i18n (~> 0.6, >= 0.6.9)
|
30
30
|
json (~> 1.7, >= 1.7.7)
|
31
31
|
minitest (~> 5.1)
|
@@ -33,19 +33,19 @@ GEM
|
|
33
33
|
tzinfo (~> 1.1)
|
34
34
|
amq-protocol (1.9.2)
|
35
35
|
builder (3.2.2)
|
36
|
-
bunny (1.
|
36
|
+
bunny (1.5.0)
|
37
37
|
amq-protocol (>= 1.9.2)
|
38
38
|
diff-lcs (1.2.5)
|
39
39
|
erubis (2.7.0)
|
40
40
|
i18n (0.6.11)
|
41
41
|
json (1.8.1)
|
42
|
-
minitest (5.4.
|
42
|
+
minitest (5.4.2)
|
43
43
|
rack (1.5.2)
|
44
44
|
rack-test (0.6.2)
|
45
45
|
rack (>= 1.0)
|
46
|
-
railties (4.1.
|
47
|
-
actionpack (= 4.1.
|
48
|
-
activesupport (= 4.1.
|
46
|
+
railties (4.1.6)
|
47
|
+
actionpack (= 4.1.6)
|
48
|
+
activesupport (= 4.1.6)
|
49
49
|
rake (>= 0.8.7)
|
50
50
|
thor (>= 0.18.1, < 2.0)
|
51
51
|
rake (10.3.2)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require "rails/application"
|
4
|
+
require "magellan/worker"
|
5
|
+
require "magellan/subscriber"
|
6
|
+
|
7
|
+
module Magellan
|
8
|
+
module Extentions
|
9
|
+
module Rails
|
10
|
+
module Application
|
11
|
+
def magellan_build_publish_request(topic, payload)
|
12
|
+
{
|
13
|
+
"headers" => {
|
14
|
+
"Method" => "PUBLISH",
|
15
|
+
"Path-Info" => topic,
|
16
|
+
},
|
17
|
+
"body" => payload,
|
18
|
+
"body_encoding" => "plain",
|
19
|
+
}
|
20
|
+
end
|
21
|
+
private :magellan_build_publish_request
|
22
|
+
|
23
|
+
def magellan_parse_publish_request(env)
|
24
|
+
if env["REQUEST_METHOD"] == "POST" and env["HTTP_X_EMULATE_MQTT"]
|
25
|
+
# POST with HTTP header X-EMULATE-MQTT
|
26
|
+
magellan_build_publish_request(env["PATH_INFO"].sub(/\A\//, ""), env["rack.input"].read)
|
27
|
+
elsif env["REQUEST_METHOD"] == "PUBLISH"
|
28
|
+
# link_to(text, "topic?payload", method: :publish, remote: true)
|
29
|
+
magellan_build_publish_request(env["PATH_INFO"].sub(/\A\//, ""), URI.unescape(env["QUERY_STRING"]))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
private :magellan_parse_publish_request
|
33
|
+
|
34
|
+
def call(env)
|
35
|
+
if request_object = magellan_parse_publish_request(env)
|
36
|
+
@subscriber_executor ||= Magellan::Subscriber::Executor.new
|
37
|
+
@subscriber_executor.execute(request_object)
|
38
|
+
res = ActionDispatch::Response.new
|
39
|
+
[200, res.headers, []]
|
40
|
+
else
|
41
|
+
super
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
if Rails.env.development?
|
50
|
+
class ::Rails::Application
|
51
|
+
prepend Magellan::Extentions::Rails::Application
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
data/lib/magellan/rails.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: magellan-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuuki Noguchi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -111,6 +111,7 @@ files:
|
|
111
111
|
- lib/magellan.rb
|
112
112
|
- lib/magellan/extentions.rb
|
113
113
|
- lib/magellan/extentions/rails.rb
|
114
|
+
- lib/magellan/extentions/rails/application.rb
|
114
115
|
- lib/magellan/extentions/rails/engine.rb
|
115
116
|
- lib/magellan/rails.rb
|
116
117
|
- lib/magellan/rails/executor.rb
|