firebase-ruby 0.1.0 → 0.2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://badge.fury.io/rb/firebase-ruby.svg)](http://badge.fury.io/rb/firebase-ruby) [![Code Climate](https://codeclimate.com/github/kenjij/firebase-ruby/badges/gpa.svg)](https://codeclimate.com/github/kenjij/firebase-ruby) [![security](https://hakiri.io/github/kenjij/firebase-ruby/master.svg)](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: []
|