firebase 0.2.7 → 0.2.8
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 +12 -3
- data/lib/firebase.rb +22 -13
- data/lib/firebase/version.rb +3 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49b70b598dec94254a0bbc0891a4d487bdf7e5ad8f21a492caee067eb666ee40
|
4
|
+
data.tar.gz: c85fdf4c54950027cfaa78d7241e2b6917a8db254cb333eeed401530595b721f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e254898a633f18cc5c17b47dd2a54df63476359bcd1e628c5da5416d7de3a840c1965019856737a2e039b8e7f4bde9b6b495bbfd0c968bbe7ace6182462de11
|
7
|
+
data.tar.gz: ec683cadd0d79f95c10036ed2e8088a5856abceaf79716639c2b074ee7017412947c333947cebe806c22365d092f894fc1a10fe6d8a48c6d3b2e5c12fa4d3caa
|
data/README.md
CHANGED
@@ -27,16 +27,25 @@ response.body # => { 'name' => "-INOQPH-aV_psbk3ZXEX" }
|
|
27
27
|
response.raw_body # => '{"name":"-INOQPH-aV_psbk3ZXEX"}'
|
28
28
|
```
|
29
29
|
|
30
|
+
### Authentication
|
30
31
|
If you have a read-only namespace, you need to authenticate your Firebase client. `firebase-ruby` will attempt to determine if you are using the old or new [authentication method](https://firebase.google.com/docs/database/rest/auth) by whether your auth string is a valid JSON string or not.
|
31
32
|
|
33
|
+
#### Using Firebase Database Secret (deprecated)
|
34
|
+
```
|
35
|
+
# Using Firebase Database Secret (deprecated)
|
36
|
+
firebase = Firebase::Client.new(base_uri, db_secret)
|
37
|
+
```
|
38
|
+
|
39
|
+
#### Using Firebase Admin SDK private key
|
40
|
+
Go to the Firebase console and under `Project Settings` -> `Service Accounts` -> `Firebase Admin SDK` click on `GENERATE NEW PRIVATE KEY`. Save the json file and use it like this:
|
41
|
+
|
32
42
|
```ruby
|
33
43
|
# Using Firebase Admin SDK private key
|
44
|
+
private_key_json_string = File.open('/path/to/your/generated/json').read
|
34
45
|
firebase = Firebase::Client.new(base_uri, private_key_json_string)
|
35
|
-
|
36
|
-
# Using Firebase Database Secret (deprecated)
|
37
|
-
firebase = Firebase::Client.new(base_uri, db_secret)
|
38
46
|
```
|
39
47
|
|
48
|
+
|
40
49
|
You can now pass custom query options to firebase:
|
41
50
|
|
42
51
|
```ruby
|
data/lib/firebase.rb
CHANGED
@@ -14,22 +14,24 @@ module Firebase
|
|
14
14
|
raise ArgumentError.new('base_uri must be a valid https uri')
|
15
15
|
end
|
16
16
|
base_uri += '/' unless base_uri.end_with?('/')
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
@request = HTTPClient.new({
|
18
|
+
:base_url => base_uri,
|
19
|
+
:default_header => {
|
20
|
+
'Content-Type' => 'application/json'
|
21
|
+
}
|
22
|
+
})
|
20
23
|
if auth && valid_json?(auth)
|
21
|
-
# Using Admin SDK
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
# Using Admin SDK service account
|
25
|
+
@credentials = Google::Auth::DefaultCredentials.make_creds(
|
26
|
+
json_key_io: StringIO.new(auth),
|
27
|
+
scope: %w(https://www.googleapis.com/auth/firebase.database https://www.googleapis.com/auth/userinfo.email)
|
28
|
+
)
|
29
|
+
@credentials.apply!(@request.default_header)
|
30
|
+
@expires_at = @credentials.issued_at + 0.95 * @credentials.expires_in
|
25
31
|
else
|
26
32
|
# Using deprecated Database Secret
|
27
|
-
@
|
33
|
+
@secret = auth
|
28
34
|
end
|
29
|
-
@request = HTTPClient.new({
|
30
|
-
:base_url => base_uri,
|
31
|
-
:default_header => default_header
|
32
|
-
})
|
33
35
|
end
|
34
36
|
|
35
37
|
# Writes and returns the data
|
@@ -66,9 +68,16 @@ module Firebase
|
|
66
68
|
if path[0] == '/'
|
67
69
|
raise(ArgumentError.new("Invalid path: #{path}. Path must be relative"))
|
68
70
|
end
|
71
|
+
|
72
|
+
if @expires_at && Time.now > @expires_at
|
73
|
+
@credentials.refresh!
|
74
|
+
@credentials.apply! @request.default_header
|
75
|
+
@expires_at = @credentials.issued_at + 0.95 * @credentials.expires_in
|
76
|
+
end
|
77
|
+
|
69
78
|
Firebase::Response.new @request.request(verb, "#{path}.json", {
|
70
79
|
:body => (data && data.to_json),
|
71
|
-
:query => (@
|
80
|
+
:query => (@secret ? { :auth => @secret }.merge(query) : query),
|
72
81
|
:follow_redirect => true
|
73
82
|
})
|
74
83
|
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: firebase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Del Ben
|
8
|
+
- Vincent Woo
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2018-01-28 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: httpclient
|
@@ -109,6 +110,7 @@ files:
|
|
109
110
|
- lib/firebase.rb
|
110
111
|
- lib/firebase/response.rb
|
111
112
|
- lib/firebase/server_value.rb
|
113
|
+
- lib/firebase/version.rb
|
112
114
|
homepage: http://github.com/oscardelben/firebase-ruby
|
113
115
|
licenses:
|
114
116
|
- MIT
|