motion-firebase 3.0.0 → 3.0.1
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.
- checksums.yaml +4 -4
- data/README.md +217 -217
- data/lib/firebase/firebase.rb +1 -4
- data/lib/firebase/firebase_auth.rb +8 -8
- data/lib/firebase/firebase_twitter_helper.rb +1 -1
- data/lib/firebase/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 303f35180c398371debc1fe2654063090bf09d30
|
4
|
+
data.tar.gz: d6ccacf82662b9152576f3a933816a11eaf67652
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c646b5369d682a9a55f497e111d155def0d32aceb2d92b1dc8efb93a4e647dbe727ebc5126250caf1dde239cdad18d8fba0cd923fad7dea3d72242c32f1e9b5a
|
7
|
+
data.tar.gz: 0e3b0ef6c29515c7f9aa7062fcd186340e5c78660e8fd62aae2a7228cf44b059f1d865b7e8dc10208b70f7a8f7e142c546489a7731debb12dcef5cd66c7003c2
|
data/README.md
CHANGED
@@ -21,71 +21,71 @@ project, the Firebase SDK gets included automatically.
|
|
21
21
|
motion-firebase 3.0
|
22
22
|
========
|
23
23
|
|
24
|
-
Lots of changes in this version:
|
24
|
+
Lots of changes in this version: [3.0.md](3.0.md)
|
25
25
|
|
26
26
|
# SDK
|
27
27
|
|
28
28
|
##### Initializing a Firebase object
|
29
29
|
|
30
30
|
```ruby
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
31
|
+
Firebase.new(url)
|
32
|
+
|
33
|
+
# it's common to set a global firebase URL. Set it in your app delegate,
|
34
|
+
# and calling `new` will use that default URL.
|
35
|
+
Firebase.url = 'https://your-app.firebaseio.com'
|
36
|
+
Firebase.url # => 'https://your-app.firebaseio.com'
|
37
|
+
Firebase.new
|
38
|
+
|
39
|
+
# these all work, too:
|
40
|
+
Firebase.url = 'your-app.firebaseio.com'
|
41
|
+
Firebase.url = 'your-app'
|
42
|
+
Firebase.url # => 'https://your-app.firebaseio.com'
|
43
43
|
```
|
44
44
|
|
45
45
|
##### Getting references to children locations
|
46
46
|
|
47
47
|
```ruby
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
firebase[path]
|
49
|
+
firebase[] # childByAutoId
|
50
|
+
firebase['fred'] # childByAppendingPath('fred')
|
51
51
|
```
|
52
52
|
|
53
53
|
##### Writing data
|
54
54
|
|
55
55
|
```ruby
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
56
|
+
firebase << { key: 'value' }
|
57
|
+
# => firebase.childByAutoId.setValue({ key: 'value'}), returns the new child
|
58
|
+
|
59
|
+
# Since firebase works with simple objects, this is equivalent to
|
60
|
+
# => firebase.childByAutoId.setValue({ 'key' => 'value'})
|
61
|
+
|
62
|
+
# set value
|
63
|
+
firebase.value = value
|
64
|
+
firebase.set(value)
|
65
|
+
firebase.set(value) { 'completion block' }
|
66
|
+
firebase.set(value, priority: priority)
|
67
|
+
firebase.set(value, priority: priority) { 'completion block' }
|
68
|
+
|
69
|
+
# set value of child node
|
70
|
+
firebase['first_name'] = 'fred' # childByAppendingPath('fred').set('fred')
|
71
|
+
|
72
|
+
# remove value
|
73
|
+
firebase.clear!
|
74
|
+
firebase.clear! { 'completion block' }
|
75
|
+
|
76
|
+
# priority
|
77
|
+
firebase.priority = priority
|
78
|
+
firebase.priority(priority)
|
79
|
+
firebase.priority(priority) { |error| 'completion block' }
|
80
|
+
|
81
|
+
# "updating" is used to update some children, but leaving others unchanged.
|
82
|
+
# (set, on the other hand, replaces the value entirely, so using set with a
|
83
|
+
# hash will remove keys that weren't specified in the new hash)
|
84
|
+
firebase.set({ first_name: 'motion', last_name: 'fireball' })
|
85
|
+
firebase.update(last_name: 'firebase') # only updates last_name, first_name is left unchanged
|
86
|
+
firebase.update(last_name: 'firebase') { |error| 'completion block' }
|
87
|
+
# for comparison:
|
88
|
+
firebase.set(last_name: 'firebase') # first_name is now 'nil'
|
89
89
|
```
|
90
90
|
|
91
91
|
##### Attaching observers to read data
|
@@ -101,54 +101,54 @@ Lots of changes in this version: <3.0.md>
|
|
101
101
|
```
|
102
102
|
|
103
103
|
```ruby
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
104
|
+
handle = firebase.on(event_type) { |snapshot| 'completion block' }
|
105
|
+
handle = firebase.on(event_type) { |snapshot, previous_sibling_name| 'completion block' }
|
106
|
+
handle = firebase.on(event_type,
|
107
|
+
completion: proc { |snapshot, previous_sibling_name| 'completion block' },
|
108
|
+
disconnect: proc { 'completion block' }
|
109
|
+
)
|
110
|
+
handle = firebase.once(event_type) { |snapshot| 'completion block' }
|
111
|
+
handle = firebase.once(event_type) { |snapshot, previous_sibling_name| 'completion block' }
|
112
|
+
handle = firebase.once(event_type,
|
113
|
+
completion: proc { |snapshot, previous_sibling_name| 'completion block' },
|
114
|
+
disconnect: proc { 'completion block' }
|
115
|
+
)
|
116
116
|
```
|
117
117
|
|
118
118
|
##### Detaching observers
|
119
119
|
|
120
120
|
```ruby
|
121
|
-
|
122
|
-
|
121
|
+
firebase.off
|
122
|
+
# => firebase.removeAllObservers
|
123
123
|
|
124
|
-
|
125
|
-
|
124
|
+
firebase.off(handle)
|
125
|
+
# => firebase.removeObserverWithHandle(handle)
|
126
126
|
```
|
127
127
|
|
128
128
|
##### Priority and Limiting
|
129
129
|
###### similar-to-yet-different-than "ORDER BY" and "LIMIT"
|
130
130
|
|
131
131
|
```ruby
|
132
|
-
|
133
|
-
|
132
|
+
firebase.start_at(priority)
|
133
|
+
# => firebase.queryStartingAtPriority(priority)
|
134
134
|
|
135
|
-
|
136
|
-
|
135
|
+
firebase.start_at(priority, child: child_name)
|
136
|
+
# => firebase.queryStartingAtPriority(priority, andChildName: child_name)
|
137
137
|
|
138
|
-
|
139
|
-
|
138
|
+
firebase.equal_to(priority)
|
139
|
+
# => firebase.queryEqualToPriority(priority)
|
140
140
|
|
141
|
-
|
142
|
-
|
141
|
+
firebase.equal_to(priority, child: child_name)
|
142
|
+
# => firebase.queryEqualToPriority(priority, andChildName: child_name)
|
143
143
|
|
144
|
-
|
145
|
-
|
144
|
+
firebase.end_at(priority)
|
145
|
+
# => firebase.queryEndingAtPriority(priority)
|
146
146
|
|
147
|
-
|
148
|
-
|
147
|
+
firebase.end_at(priority, child: child_name)
|
148
|
+
# => firebase.queryEndingAtPriority(priority, andChildName: child_name)
|
149
149
|
|
150
|
-
|
151
|
-
|
150
|
+
firebase.limit(limit)
|
151
|
+
# => firebase.queryLimitedToNumberOfChildren(limit)
|
152
152
|
```
|
153
153
|
|
154
154
|
##### Managing presence
|
@@ -157,82 +157,82 @@ SOO COOL! Play with these, you can *easily* create a presence system for your
|
|
157
157
|
real-time app or game.
|
158
158
|
|
159
159
|
```ruby
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
160
|
+
Firebase.online!
|
161
|
+
Firebase.offline!
|
162
|
+
Firebase.connected? # returns a Firebase ref that changes value depending on connectivity
|
163
|
+
|
164
|
+
# or you can pass in a block, this block will be called with the connected
|
165
|
+
# state as a bool:
|
166
|
+
handler = Firebase.connected? do |connected|
|
167
|
+
if connected
|
168
|
+
# so awesome
|
169
|
+
end
|
170
|
+
end
|
171
|
+
# you should turn it off when you're done, otherwise you'll have a memory leak
|
172
|
+
Firebase.off(handler)
|
173
|
+
|
174
|
+
# so what you do is get a ref to the authenticated user's "presence" value.
|
175
|
+
# Then, on_disconnect, set the value to 'false'.
|
176
|
+
firebase.on_disconnect(value) # set the ref to `value` when disconnected
|
177
|
+
firebase.on_disconnect(value) { |error| 'completion block' }
|
178
|
+
firebase.on_disconnect(value, priority: priority)
|
179
|
+
firebase.on_disconnect(value, priority: priority) { |error| 'completion block' }
|
180
|
+
firebase.on_disconnect(nil)
|
181
|
+
firebase.on_disconnect(nil) { |error| 'completion block' }
|
182
|
+
firebase.on_disconnect({ child: values })
|
183
|
+
firebase.on_disconnect({ child: values }) { |error| 'completion block' }
|
184
|
+
|
185
|
+
# sometimes you need to cancel these 'on_disconnect' operations
|
186
|
+
firebase.cancel_disconnect
|
187
|
+
firebase.cancel_disconnect { |error| 'completion block' }
|
188
188
|
```
|
189
189
|
|
190
190
|
##### Transactions
|
191
191
|
|
192
192
|
```ruby
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
193
|
+
firebase.transaction do |data|
|
194
|
+
current_value = data.value
|
195
|
+
current_value += 1
|
196
|
+
FTransactionResult.successWithValue(current_value)
|
197
|
+
end
|
198
|
+
firebase.transaction(local: false) do |data|
|
199
|
+
#...
|
200
|
+
end
|
201
|
+
firebase.transaction(
|
202
|
+
completion: proc { |error, committed, snapshot| }
|
203
|
+
) do |data|
|
204
|
+
current_value = data.value
|
205
|
+
current_value += 1
|
206
|
+
FTransactionResult.successWithValue(current_value)
|
207
|
+
end
|
208
|
+
firebase.transaction(
|
209
|
+
transaction: proc { |data| 'transaction block' },
|
210
|
+
completion: proc { |error, committed, snapshot| }
|
211
|
+
local: true || false,
|
212
|
+
)
|
213
213
|
```
|
214
214
|
|
215
215
|
##### Retrieving String Representation
|
216
216
|
|
217
217
|
```ruby
|
218
|
-
|
219
|
-
|
218
|
+
firebase.to_s
|
219
|
+
firebase.inspect
|
220
220
|
```
|
221
221
|
|
222
222
|
##### Properties
|
223
223
|
|
224
224
|
```ruby
|
225
|
-
|
226
|
-
|
227
|
-
|
225
|
+
firebase.parent
|
226
|
+
firebase.root
|
227
|
+
firebase.name
|
228
228
|
```
|
229
229
|
|
230
230
|
##### Global configuration and settings
|
231
231
|
|
232
232
|
```ruby
|
233
|
-
|
234
|
-
|
235
|
-
|
233
|
+
Firebase.dispatch_queue=(queue)
|
234
|
+
Firebase.sdkVersion
|
235
|
+
Motion::Firebase::SdkVersion # this string is more human readable than sdkVersion
|
236
236
|
```
|
237
237
|
|
238
238
|
|
@@ -244,30 +244,30 @@ set a default `Firebase.url`
|
|
244
244
|
##### Checking current authentication status
|
245
245
|
|
246
246
|
```ruby
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
247
|
+
Firebase.authenticated? # => true/false
|
248
|
+
# you pretty much always need to hold a reference to the "handler"
|
249
|
+
auth_handler = Firebase.authenticated? do |auth_data|
|
250
|
+
if auth_data
|
251
|
+
# authenticated!
|
252
|
+
else
|
253
|
+
# not so much
|
254
|
+
end
|
255
|
+
end
|
256
|
+
# turn off the handler, otherwise, yeah, memory leaks.
|
257
|
+
Firebase.off_auth(auth_handler)
|
258
258
|
```
|
259
259
|
|
260
260
|
##### Authenticate with previous token
|
261
261
|
|
262
262
|
```ruby
|
263
|
-
|
264
|
-
|
263
|
+
Firebase.authenticate(token) do |error, auth_data|
|
264
|
+
end
|
265
265
|
```
|
266
266
|
|
267
267
|
##### Removing any existing authentication
|
268
268
|
|
269
269
|
```ruby
|
270
|
-
|
270
|
+
Firebase.logout
|
271
271
|
```
|
272
272
|
|
273
273
|
## Email/password authentication methods
|
@@ -276,14 +276,14 @@ This is the most common way to login. It allows Firebase to create users and
|
|
276
276
|
tokens.
|
277
277
|
|
278
278
|
```ruby
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
279
|
+
Firebase.create_user(email: 'hello@example.com', password: '12345') { |error, auth_data| }
|
280
|
+
Firebase.remove_user(email: 'hello@example.com', password: '12345') { |error, auth_data| }
|
281
|
+
Firebase.login(email: 'hello@example.com', password: '12345') { |error, auth_data| }
|
282
|
+
Firebase.login_anonymously { |error, auth_data| }
|
283
|
+
Firebase.update_user(email: 'hello@example.com', old_password: '12345', new_password: '54321') { |error, success| }
|
284
|
+
|
285
|
+
auth_data.uid # is a globally unique user identifier
|
286
|
+
auth_data.token # can be stored (in a keychain!) to authenticate the same user again later
|
287
287
|
```
|
288
288
|
|
289
289
|
See <https://www.firebase.com/docs/ios/api/#fauthdata_properties> for other
|
@@ -298,11 +298,11 @@ This Facebook helper is a port of the Objective-C code from
|
|
298
298
|
<https://www.firebase.com/docs/ios/guide/login/facebook.html>.
|
299
299
|
|
300
300
|
```ruby
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
301
|
+
Firebase.open_facebook_session(
|
302
|
+
permissions: ['public_profile'], # these are the default values. if
|
303
|
+
allow_login_ui: true, # you're OK with them, they are
|
304
|
+
) do |error, auth_data| # optional, so just provide a block.
|
305
|
+
end
|
306
306
|
```
|
307
307
|
|
308
308
|
##### Twitter authentication
|
@@ -314,41 +314,41 @@ little streamlined here, since `open_twitter_session` returns a block that you
|
|
314
314
|
can call with the chosen account.
|
315
315
|
|
316
316
|
```ruby
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
317
|
+
# it's nice to be able to set-and-forget the twitter_api_key (in your
|
318
|
+
# application delegate, for example)
|
319
|
+
Firebase.twitter_api_key = 'your key!'
|
320
|
+
|
321
|
+
# You must set Firebase.url=, or call open_twitter_session on an existing
|
322
|
+
# Firebase ref. The first step is to get the Twitter accounts on this
|
323
|
+
# device. Even if there is just one, you need to "choose" it here. Also,
|
324
|
+
# you can pass the twitter api_key as an option, otherwise this method will
|
325
|
+
# use Firebase.twitter_api_key
|
326
|
+
Firebase.open_twitter_session(api_key: 'your key!') do |error, accounts, next_step|
|
327
|
+
# next_step is a block you call with the chosen twitter account and a
|
328
|
+
# firebase handler for the authentication success or failure
|
329
|
+
if error
|
330
|
+
# obviously do some stuff here
|
331
|
+
else
|
332
|
+
present_twitter_chooser(accounts, next_step) do |error, auth_data|
|
333
|
+
# this block is passed to next_step in present_twitter_chooser
|
329
334
|
if error
|
330
|
-
#
|
331
|
-
else
|
332
|
-
present_twitter_chooser(accounts, next_step) do |error, auth_data|
|
333
|
-
# this block is passed to next_step in present_twitter_chooser
|
334
|
-
if error
|
335
|
-
# bummer
|
336
|
-
else
|
337
|
-
# awesome!
|
338
|
-
end
|
339
|
-
end
|
340
|
-
else
|
341
|
-
end
|
342
|
-
|
343
|
-
def present_twitter_chooser(accounts, next_step, &firebase_handler)
|
344
|
-
if accounts.length == 1
|
345
|
-
next_step.call(accounts[0], &firebase_handler)
|
335
|
+
# bummer
|
346
336
|
else
|
347
|
-
#
|
348
|
-
... awesome twitter account chooser code ...
|
349
|
-
next_step.call(account, &firebase_handler)
|
337
|
+
# awesome!
|
350
338
|
end
|
351
339
|
end
|
340
|
+
else
|
341
|
+
end
|
342
|
+
|
343
|
+
def present_twitter_chooser(accounts, next_step, &firebase_handler)
|
344
|
+
if accounts.length == 1
|
345
|
+
next_step.call(accounts[0], &firebase_handler)
|
346
|
+
else
|
347
|
+
# present a controller or action sheet or something like that
|
348
|
+
... awesome twitter account chooser code ...
|
349
|
+
next_step.call(account, &firebase_handler)
|
350
|
+
end
|
351
|
+
end
|
352
352
|
```
|
353
353
|
|
354
354
|
##### Github authentication
|
@@ -358,9 +358,9 @@ a github access token from the user... but anyway here's the `motion-firebase`
|
|
358
358
|
code based on <https://www.firebase.com/docs/ios/guide/login/github.html>.
|
359
359
|
|
360
360
|
```ruby
|
361
|
-
|
362
|
-
|
363
|
-
|
361
|
+
Firebase.github_token = 'github oauth token'
|
362
|
+
Firebase.open_github_session do |error, auth_data|
|
363
|
+
end
|
364
364
|
```
|
365
365
|
|
366
366
|
##### Google authentication
|
@@ -371,9 +371,9 @@ take the time to port the code this time, but I hope someone does someday! 😄
|
|
371
371
|
You can read Firebase's instructions here: <https://www.firebase.com/docs/ios/guide/login/google.html>
|
372
372
|
|
373
373
|
```ruby
|
374
|
-
|
375
|
-
|
376
|
-
|
374
|
+
Firebase.google_token = 'google oauth token'
|
375
|
+
Firebase.open_google_session do |error, auth_data|
|
376
|
+
end
|
377
377
|
```
|
378
378
|
|
379
379
|
##### Generic OAuth Authentication
|
@@ -382,22 +382,22 @@ Usually you will use the helpers from above, but here are some lower level
|
|
382
382
|
methods:
|
383
383
|
|
384
384
|
```ruby
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
385
|
+
# using a token
|
386
|
+
firebase_ref.login_to_oauth(provider, token: token) do |error, auth_data| .. end
|
387
|
+
firebase_ref.login_to_oauth(provider, token) do |error, auth_data| .. end
|
388
|
+
|
389
|
+
# using parameters
|
390
|
+
firebase_ref.login_to_oauth(provider, oauth_token: token, oauth_token_secret: secret) do |error, auth_data| .. end
|
391
|
+
params = { ... }
|
392
|
+
firebase_ref.login_to_oauth(provider, params) do |error, auth_data| .. end
|
393
|
+
|
394
|
+
# which is a wrapper for these SDK methods:
|
395
|
+
firebase_ref.authWithOAuthProvider(provider, token: token, withCompletionBlock: block)
|
396
|
+
firebase_ref.authWithOAuthProvider(provider, parameters: params, withCompletionBlock: block)
|
397
|
+
|
398
|
+
# Again, the `open_*_session` methods are even more convenient.
|
399
|
+
firebase_ref.login_to_facebook(facebook_access_token, &block)
|
400
|
+
firebase_ref.login_to_twitter(token: token, secret: secret, &block)
|
401
|
+
firebase_ref.login_to_github(github_oauth_token, &block)
|
402
|
+
firebase_ref.login_to_google(google_oauth_token, &block)
|
403
403
|
```
|
data/lib/firebase/firebase.rb
CHANGED
@@ -27,7 +27,7 @@ class Firebase
|
|
27
27
|
raise "Invalid URL #{url.inspect} in #{__method__}: URL scheme should be 'https://', not 'http://'"
|
28
28
|
elsif url.start_with?('https://')
|
29
29
|
# all good
|
30
|
-
elsif url =~ '^\w+://'
|
30
|
+
elsif url =~ %r'^\w+://'
|
31
31
|
raise "Invalid URL #{url.inspect} in #{__method__}: URL scheme should be 'https://', not '#{$~}'"
|
32
32
|
else
|
33
33
|
url = "https://#{url}"
|
@@ -36,9 +36,6 @@ class Firebase
|
|
36
36
|
# should we support `Firebase.url = 'myapp/path/to/child/'` ? I'm gonna say
|
37
37
|
# NO for now...
|
38
38
|
unless url.include?('.firebaseio.com')
|
39
|
-
if url.include?('/')
|
40
|
-
raise "Invalid URL #{url.inspect} in #{__method__}: URL does not include 'firebaseio.com'"
|
41
|
-
end
|
42
39
|
url = "#{url}.firebaseio.com"
|
43
40
|
end
|
44
41
|
|
@@ -10,15 +10,15 @@ class Firebase
|
|
10
10
|
end
|
11
11
|
|
12
12
|
# @example
|
13
|
-
# Firebase.
|
13
|
+
# Firebase.authenticate('secrettoken') do |error, auth_data|
|
14
14
|
# if auth_data
|
15
15
|
# # authenticated
|
16
16
|
# end
|
17
17
|
# end
|
18
|
-
def self.
|
19
|
-
Firebase.new.
|
18
|
+
def self.authenticate(token, options={}, &block)
|
19
|
+
Firebase.new.authenticate(token, options, &block)
|
20
20
|
end
|
21
|
-
def
|
21
|
+
def authenticate(token, options={}, &and_then)
|
22
22
|
and_then ||= options[:completion]
|
23
23
|
disconnect_block = options[:disconnect]
|
24
24
|
if disconnect || and_then.arity < 2
|
@@ -46,12 +46,12 @@ class Firebase
|
|
46
46
|
def self.authenticated?(&block)
|
47
47
|
Firebase.new.authenticated?(&block)
|
48
48
|
end
|
49
|
-
# checks the
|
50
|
-
# is used to determine the status. If you don't
|
51
|
-
# returns true or false.
|
49
|
+
# checks the authenticated status. If you pass a block the
|
50
|
+
# observeAuthEventWithBlock is used to determine the status. If you don't
|
51
|
+
# pass a block, this method returns true or false.
|
52
52
|
def authenticated?(&block)
|
53
53
|
if block
|
54
|
-
observeAuthEventWithBlock(
|
54
|
+
observeAuthEventWithBlock(block)
|
55
55
|
else
|
56
56
|
!!authData
|
57
57
|
end
|
data/lib/firebase/version.rb
CHANGED