firebase-ruby 0.1.0 → 0.2.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/.codeclimate.yml +18 -0
- data/README.md +60 -2
- data/bin/fbrb +10 -1
- data/firebase-ruby.gemspec +5 -2
- data/lib/firebase-ruby/database.rb +2 -5
- data/lib/firebase-ruby/version.rb +1 -1
- metadata +22 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ed31533488ea96baffad5a57685f0270a38e3c4
|
4
|
+
data.tar.gz: 21e8b7d9747ef1f43a614de297a54182781ccb0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfb8b6e5680a6be288405e3f3b69f074afbcb91849403d2b816c37985f079b6759e79cb35b06ded436c422d390b48db0f4406e1cf67b04d6e0981cfadd36e499
|
7
|
+
data.tar.gz: ef0cfe88733e0f8f6d17f5dd5f05b26e9bfcbe8e530b2f3ecc8ff0e3f15c23202685c031f68a35ae119f88d34ccc025220fd22eada415f36174f958098285421
|
data/.codeclimate.yml
ADDED
data/README.md
CHANGED
@@ -1,2 +1,60 @@
|
|
1
|
-
# firebase-ruby
|
2
|
-
|
1
|
+
# firebase-ruby
|
2
|
+
|
3
|
+
[](http://badge.fury.io/rb/firebase-ruby) [](https://codeclimate.com/github/kenjij/firebase-ruby) [](https://hakiri.io/github/kenjij/firebase-ruby/master)
|
4
|
+
|
5
|
+
A pure Ruby library for [Firebase Realtime Database](https://firebase.google.com/products/database/) [REST API](https://firebase.google.com/docs/reference/rest/database/) which has only one external dependancy: [jwt](http://jwt.github.io/ruby-jwt/). `firebase-ruby` uses Ruby's built-in Net::HTTP for all HTTP access.
|
6
|
+
|
7
|
+
## CLI: fbrb
|
8
|
+
|
9
|
+
This gem has a built-in command `fbrb` as an example use and for quick testing.
|
10
|
+
|
11
|
+
```sh
|
12
|
+
fbrb -k privatekey.json /
|
13
|
+
```
|
14
|
+
|
15
|
+
This will download the entire database in JSON format. By using the private key JSON file provided via Firebase console when creating a service account, necessary information such as project ID, URL, credentials are automatically applied.
|
16
|
+
|
17
|
+
## Using In An App
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
require 'firebase-ruby'
|
21
|
+
|
22
|
+
# If you want to enable debug logging
|
23
|
+
Firebase.logger = Logger.new(STDOUT)
|
24
|
+
Firebase.logger.level = Logger::DEBUG
|
25
|
+
|
26
|
+
db = Firebase::Database.new()
|
27
|
+
db.set_auth_with_key(path: path_to_key_file)
|
28
|
+
# or alternatively supply the JSON as string
|
29
|
+
db.set_auth_with_key(json: json_string)
|
30
|
+
|
31
|
+
db.get('/users/jack/name')
|
32
|
+
#{
|
33
|
+
# "first": "Jack",
|
34
|
+
# "last": "Sparrow"
|
35
|
+
#}
|
36
|
+
|
37
|
+
db.put('/users/jack/name', {first: "Jack", last: "Sparrow"})
|
38
|
+
#{
|
39
|
+
# "first": "Jack",
|
40
|
+
# "last": "Sparrow"
|
41
|
+
#}
|
42
|
+
|
43
|
+
db.post('/message_list', {user_id: "jack", text: "Ahoy!"})
|
44
|
+
#{
|
45
|
+
# "name": "-INOQPH-aV_psbk3ZXEX"
|
46
|
+
#}
|
47
|
+
|
48
|
+
db.patch('/users/jack/name', {last: "Jones"})
|
49
|
+
#{
|
50
|
+
# "last": "Jones"
|
51
|
+
#}
|
52
|
+
|
53
|
+
db.delete('/users/jack/name/last')
|
54
|
+
```
|
55
|
+
|
56
|
+
## OAuth 2.0 Access Token
|
57
|
+
|
58
|
+
Using the given credentials, `firebase-ruby` will automatically retrieve the [access token](https://firebase.google.com/docs/reference/rest/database/user-auth) from Google's server. The token is valid for 1 hour but a new token will be fetched right before it expires.
|
59
|
+
|
60
|
+
`firebase-ruby` keeps the Google OAuth 2.0 process a black box. But for more details, see the document on Google Developers which the process is based on: [Using OAuth 2.0 for Server to Server Applications](https://developers.google.com/identity/protocols/OAuth2ServiceAccount).
|
data/bin/fbrb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'firebase-ruby/trollop'
|
3
3
|
require 'firebase-ruby'
|
4
|
+
require 'json'
|
4
5
|
|
5
6
|
|
6
7
|
opts = Trollop::options do
|
@@ -11,6 +12,7 @@ opts = Trollop::options do
|
|
11
12
|
opt :log, 'Log file', type: :string
|
12
13
|
opt :path, 'Path', type: :string
|
13
14
|
opt :request, 'Specify request command to use', type: :string, short: 'X', default: 'get'
|
15
|
+
opt :ruby, 'Output Ruby format'
|
14
16
|
opt :verbose, 'Verbose mode'
|
15
17
|
end
|
16
18
|
|
@@ -48,4 +50,11 @@ when :put, :patch, :post
|
|
48
50
|
end
|
49
51
|
end
|
50
52
|
|
51
|
-
|
53
|
+
if data
|
54
|
+
if opts[:ruby]
|
55
|
+
puts data
|
56
|
+
else
|
57
|
+
json_opts = {indent: ' ', space: ' ', object_nl: "\n", array_nl: "\n"}
|
58
|
+
puts JSON.fast_generate(data, json_opts)
|
59
|
+
end
|
60
|
+
end
|
data/firebase-ruby.gemspec
CHANGED
@@ -7,12 +7,15 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = Firebase::Version
|
8
8
|
s.authors = ['Ken J.']
|
9
9
|
s.email = ['kenjij@gmail.com']
|
10
|
-
s.summary = %q{Pure
|
11
|
-
s.description = %q{Firebase REST library
|
10
|
+
s.summary = %q{Pure Ruby Firebase REST library}
|
11
|
+
s.description = %q{A simple Firebase Realtime Database REST API library in pure Ruby.}
|
12
12
|
s.homepage = 'https://github.com/kenjij/firebase-ruby'
|
13
13
|
s.license = 'MIT'
|
14
14
|
|
15
15
|
s.files = `git ls-files`.split($/)
|
16
16
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
17
|
s.require_paths = ['lib']
|
18
|
+
|
19
|
+
s.required_ruby_version = '>= 2.0'
|
20
|
+
s.add_runtime_dependency 'jwt', '~> 1.5'
|
18
21
|
end
|
@@ -59,12 +59,9 @@ module Firebase
|
|
59
59
|
def http
|
60
60
|
unless @http
|
61
61
|
url = FIREBASE_URL_TEMPLATE % project_id
|
62
|
-
|
63
|
-
'Authorization' => "Bearer #{auth.valid_token}",
|
64
|
-
'Content-Type' => 'application/json'
|
65
|
-
}
|
66
|
-
@http = HTTP.new(url, headers)
|
62
|
+
@http = HTTP.new(url, {'Content-Type' => 'application/json'})
|
67
63
|
end
|
64
|
+
@http.headers['Authorization'] = "Bearer #{auth.valid_token}"
|
68
65
|
return @http
|
69
66
|
end
|
70
67
|
|
metadata
CHANGED
@@ -1,16 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: firebase-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ken J.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
12
|
-
dependencies:
|
13
|
-
|
11
|
+
date: 2017-08-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jwt
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.5'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.5'
|
27
|
+
description: A simple Firebase Realtime Database REST API library in pure Ruby.
|
14
28
|
email:
|
15
29
|
- kenjij@gmail.com
|
16
30
|
executables:
|
@@ -18,6 +32,7 @@ executables:
|
|
18
32
|
extensions: []
|
19
33
|
extra_rdoc_files: []
|
20
34
|
files:
|
35
|
+
- ".codeclimate.yml"
|
21
36
|
- LICENSE
|
22
37
|
- README.md
|
23
38
|
- bin/fbrb
|
@@ -41,7 +56,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
41
56
|
requirements:
|
42
57
|
- - ">="
|
43
58
|
- !ruby/object:Gem::Version
|
44
|
-
version: '0'
|
59
|
+
version: '2.0'
|
45
60
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
46
61
|
requirements:
|
47
62
|
- - ">="
|
@@ -49,8 +64,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
49
64
|
version: '0'
|
50
65
|
requirements: []
|
51
66
|
rubyforge_project:
|
52
|
-
rubygems_version: 2.
|
67
|
+
rubygems_version: 2.4.8
|
53
68
|
signing_key:
|
54
69
|
specification_version: 4
|
55
|
-
summary: Pure
|
70
|
+
summary: Pure Ruby Firebase REST library
|
56
71
|
test_files: []
|