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.
@@ -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