stackmob 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 = 'HTTP_X_STACKMOB_PROXY'
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
@@ -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: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
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-04-09 00:00:00 Z
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: *id006
128
+ requirement: *id007
113
129
  type: :development
114
130
  name: minitest
115
131
  - !ruby/object:Gem::Dependency
116
- version_requirements: &id007 !ruby/object:Gem::Requirement
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: *id007
144
+ requirement: *id008
129
145
  type: :development
130
146
  name: yard
131
147
  - !ruby/object:Gem::Dependency
132
- version_requirements: &id008 !ruby/object:Gem::Requirement
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: *id008
158
+ requirement: *id009
143
159
  type: :development
144
160
  name: cucumber
145
161
  - !ruby/object:Gem::Dependency
146
- version_requirements: &id009 !ruby/object:Gem::Requirement
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: *id009
174
+ requirement: *id010
159
175
  type: :development
160
176
  name: bundler
161
177
  - !ruby/object:Gem::Dependency
162
- version_requirements: &id010 !ruby/object:Gem::Requirement
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: *id010
190
+ requirement: *id011
175
191
  type: :development
176
192
  name: jeweler
177
193
  - !ruby/object:Gem::Dependency
178
- version_requirements: &id011 !ruby/object:Gem::Requirement
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: *id011
204
+ requirement: *id012
189
205
  type: :development
190
206
  name: rcov
191
207
  - !ruby/object:Gem::Dependency
192
- version_requirements: &id012 !ruby/object:Gem::Requirement
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: *id012
218
+ requirement: *id013
203
219
  type: :development
204
220
  name: mocha
205
221
  - !ruby/object:Gem::Dependency
206
- version_requirements: &id013 !ruby/object:Gem::Requirement
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: *id013
232
+ requirement: *id014
217
233
  type: :development
218
234
  name: rack-test
219
235
  - !ruby/object:Gem::Dependency
220
- version_requirements: &id014 !ruby/object:Gem::Requirement
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: *id014
246
+ requirement: *id015
231
247
  type: :development
232
248
  name: bluecloth
233
249
  - !ruby/object:Gem::Dependency
234
- version_requirements: &id015 !ruby/object:Gem::Requirement
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: *id015
262
+ requirement: *id016
247
263
  type: :development
248
264
  name: httpclient
249
265
  description: Support Gem for StackMob Heroku Add-On