stackmob 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/stackmob.rb +9 -0
- data/lib/stackmob/middleware/proxy.rb +21 -3
- data/lib/stackmob/push.rb +6 -0
- metadata +39 -23
data/lib/stackmob.rb
CHANGED
@@ -73,6 +73,15 @@ module StackMob
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
+
def self.plain_proxy_host
|
77
|
+
if env_url = ENV['STACKMOB_DEV_URL']
|
78
|
+
env_url.sub(/^.*:\/\//, "")
|
79
|
+
else
|
80
|
+
cluster_name = (is_html5?) ? "mob1" : "mob2"
|
81
|
+
"api.#{cluster_name}.stackmob.com"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
76
85
|
def self.env
|
77
86
|
(is_production?) ? PRODUCTION : SANDBOX
|
78
87
|
end
|
@@ -13,14 +13,18 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
require 'rack'
|
16
|
+
require 'rack/proxy'
|
16
17
|
|
17
18
|
module StackMob
|
18
19
|
module Middleware
|
19
|
-
class Proxy
|
20
|
+
class Proxy < ::Rack::Proxy
|
20
21
|
|
21
22
|
HEADER_NAME = 'X-StackMob-Proxy'
|
22
|
-
RACK_ENV_NAME = '
|
23
|
+
RACK_ENV_NAME = 'HTTP_X_STACKMOB_PROXY_PLAIN'
|
24
|
+
LEGACY_RACK_ENV_NAME = 'HTTP_X_STACKMOB_PROXY'
|
23
25
|
VALID_HEADER_VALUES = ['stackmob-api']
|
26
|
+
STACKMOB_FORWARDED_HOST_ENV = 'HTTP_X_STACKMOB_FORWARDED_HOST'
|
27
|
+
STACKMOB_FORWARDED_PORT_ENV = 'HTTP_X_STACKMOB_FORWARDED_PORT'
|
24
28
|
|
25
29
|
EXCLUDED_HEADERS = ["VERSION", "DATE", "HOST", "ACCEPT"].map { |s| "HTTP_#{s}" }
|
26
30
|
|
@@ -29,7 +33,9 @@ module StackMob
|
|
29
33
|
end
|
30
34
|
|
31
35
|
def call(env)
|
32
|
-
if VALID_HEADER_VALUES.include?(env[RACK_ENV_NAME])
|
36
|
+
if VALID_HEADER_VALUES.include?(env[RACK_ENV_NAME]) || env['PATH_INFO'] =~ /^\/?.*\/accessToken/
|
37
|
+
super(env)
|
38
|
+
elsif VALID_HEADER_VALUES.include?(env[LEGACY_RACK_ENV_NAME])
|
33
39
|
req = ::Rack::Request.new(env)
|
34
40
|
method = http_method(env)
|
35
41
|
headers = http_headers(env)
|
@@ -43,6 +49,18 @@ module StackMob
|
|
43
49
|
end
|
44
50
|
end
|
45
51
|
|
52
|
+
def rewrite_env(env)
|
53
|
+
env[STACKMOB_FORWARDED_HOST_ENV] = "127.0.0.1"
|
54
|
+
env[STACKMOB_FORWARDED_PORT_ENV] = env['SERVER_PORT']
|
55
|
+
env['HTTP_HOST'] = StackMob.plain_proxy_host
|
56
|
+
if StackMob.plain_proxy_host != ENV['STACKMOB_DEV_URL']
|
57
|
+
# rewrite port for api.stackmob.com
|
58
|
+
env['SERVER_PORT'] = 80
|
59
|
+
end
|
60
|
+
|
61
|
+
env
|
62
|
+
end
|
63
|
+
|
46
64
|
def client
|
47
65
|
@client ||= StackMob::Client.new(StackMob.dev_url, StackMob.app_name, StackMob::SANDBOX, StackMob.key, StackMob.secret)
|
48
66
|
end
|
data/lib/stackmob/push.rb
CHANGED
@@ -23,6 +23,7 @@ module StackMob
|
|
23
23
|
BROADCAST_PATH = "/push_broadcast_universal"
|
24
24
|
PUSH_TOKENS_PATH = "/push_tokens_universal"
|
25
25
|
PUSH_USERS_PATH = "/push_users_universal"
|
26
|
+
GET_USERS_TOKEN_PATH = "/get_tokens_for_users_universal"
|
26
27
|
|
27
28
|
DEFAULT_BADGE = 0
|
28
29
|
DEFAULT_SOUND = ""
|
@@ -71,6 +72,11 @@ module StackMob
|
|
71
72
|
payload = {:userIds => Array(to), :kvPairs => opts}
|
72
73
|
self.client.request(:post, PUSH_SVC, PUSH_USERS_PATH, payload)
|
73
74
|
end
|
75
|
+
|
76
|
+
def get_tokens_for_users(to)
|
77
|
+
payload = {:userIds => Array(to).join(",") }
|
78
|
+
response = self.client.request(:get, PUSH_SVC, GET_USERS_TOKEN_PATH, payload)
|
79
|
+
end
|
74
80
|
end
|
75
81
|
|
76
82
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stackmob
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 3
|
10
|
+
version: 0.1.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- StackMob
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-05-02 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
@@ -98,6 +98,22 @@ dependencies:
|
|
98
98
|
name: rack
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ~>
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
hash: 29
|
106
|
+
segments:
|
107
|
+
- 0
|
108
|
+
- 3
|
109
|
+
- 7
|
110
|
+
version: 0.3.7
|
111
|
+
prerelease: false
|
112
|
+
requirement: *id006
|
113
|
+
type: :runtime
|
114
|
+
name: rack-proxy
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
101
117
|
none: false
|
102
118
|
requirements:
|
103
119
|
- - ~>
|
@@ -109,11 +125,11 @@ dependencies:
|
|
109
125
|
- 0
|
110
126
|
version: 2.11.0
|
111
127
|
prerelease: false
|
112
|
-
requirement: *
|
128
|
+
requirement: *id007
|
113
129
|
type: :development
|
114
130
|
name: minitest
|
115
131
|
- !ruby/object:Gem::Dependency
|
116
|
-
version_requirements: &
|
132
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
117
133
|
none: false
|
118
134
|
requirements:
|
119
135
|
- - ~>
|
@@ -125,11 +141,11 @@ dependencies:
|
|
125
141
|
- 0
|
126
142
|
version: 0.6.0
|
127
143
|
prerelease: false
|
128
|
-
requirement: *
|
144
|
+
requirement: *id008
|
129
145
|
type: :development
|
130
146
|
name: yard
|
131
147
|
- !ruby/object:Gem::Dependency
|
132
|
-
version_requirements: &
|
148
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
133
149
|
none: false
|
134
150
|
requirements:
|
135
151
|
- - ">="
|
@@ -139,11 +155,11 @@ dependencies:
|
|
139
155
|
- 0
|
140
156
|
version: "0"
|
141
157
|
prerelease: false
|
142
|
-
requirement: *
|
158
|
+
requirement: *id009
|
143
159
|
type: :development
|
144
160
|
name: cucumber
|
145
161
|
- !ruby/object:Gem::Dependency
|
146
|
-
version_requirements: &
|
162
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
147
163
|
none: false
|
148
164
|
requirements:
|
149
165
|
- - ~>
|
@@ -155,11 +171,11 @@ dependencies:
|
|
155
171
|
- 0
|
156
172
|
version: 1.0.0
|
157
173
|
prerelease: false
|
158
|
-
requirement: *
|
174
|
+
requirement: *id010
|
159
175
|
type: :development
|
160
176
|
name: bundler
|
161
177
|
- !ruby/object:Gem::Dependency
|
162
|
-
version_requirements: &
|
178
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
163
179
|
none: false
|
164
180
|
requirements:
|
165
181
|
- - ~>
|
@@ -171,11 +187,11 @@ dependencies:
|
|
171
187
|
- 4
|
172
188
|
version: 1.6.4
|
173
189
|
prerelease: false
|
174
|
-
requirement: *
|
190
|
+
requirement: *id011
|
175
191
|
type: :development
|
176
192
|
name: jeweler
|
177
193
|
- !ruby/object:Gem::Dependency
|
178
|
-
version_requirements: &
|
194
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
179
195
|
none: false
|
180
196
|
requirements:
|
181
197
|
- - ">="
|
@@ -185,11 +201,11 @@ dependencies:
|
|
185
201
|
- 0
|
186
202
|
version: "0"
|
187
203
|
prerelease: false
|
188
|
-
requirement: *
|
204
|
+
requirement: *id012
|
189
205
|
type: :development
|
190
206
|
name: rcov
|
191
207
|
- !ruby/object:Gem::Dependency
|
192
|
-
version_requirements: &
|
208
|
+
version_requirements: &id013 !ruby/object:Gem::Requirement
|
193
209
|
none: false
|
194
210
|
requirements:
|
195
211
|
- - ">="
|
@@ -199,11 +215,11 @@ dependencies:
|
|
199
215
|
- 0
|
200
216
|
version: "0"
|
201
217
|
prerelease: false
|
202
|
-
requirement: *
|
218
|
+
requirement: *id013
|
203
219
|
type: :development
|
204
220
|
name: mocha
|
205
221
|
- !ruby/object:Gem::Dependency
|
206
|
-
version_requirements: &
|
222
|
+
version_requirements: &id014 !ruby/object:Gem::Requirement
|
207
223
|
none: false
|
208
224
|
requirements:
|
209
225
|
- - ">="
|
@@ -213,11 +229,11 @@ dependencies:
|
|
213
229
|
- 0
|
214
230
|
version: "0"
|
215
231
|
prerelease: false
|
216
|
-
requirement: *
|
232
|
+
requirement: *id014
|
217
233
|
type: :development
|
218
234
|
name: rack-test
|
219
235
|
- !ruby/object:Gem::Dependency
|
220
|
-
version_requirements: &
|
236
|
+
version_requirements: &id015 !ruby/object:Gem::Requirement
|
221
237
|
none: false
|
222
238
|
requirements:
|
223
239
|
- - ">="
|
@@ -227,11 +243,11 @@ dependencies:
|
|
227
243
|
- 0
|
228
244
|
version: "0"
|
229
245
|
prerelease: false
|
230
|
-
requirement: *
|
246
|
+
requirement: *id015
|
231
247
|
type: :development
|
232
248
|
name: bluecloth
|
233
249
|
- !ruby/object:Gem::Dependency
|
234
|
-
version_requirements: &
|
250
|
+
version_requirements: &id016 !ruby/object:Gem::Requirement
|
235
251
|
none: false
|
236
252
|
requirements:
|
237
253
|
- - ~>
|
@@ -243,7 +259,7 @@ dependencies:
|
|
243
259
|
- 4
|
244
260
|
version: 2.2.4
|
245
261
|
prerelease: false
|
246
|
-
requirement: *
|
262
|
+
requirement: *id016
|
247
263
|
type: :development
|
248
264
|
name: httpclient
|
249
265
|
description: Support Gem for StackMob Heroku Add-On
|