stackmob 0.1.2 → 0.1.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.
- 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
|