rest-firebase 1.0.3 → 1.1.0
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/.travis.yml +9 -6
- data/CHANGES.md +4 -0
- data/Rakefile +6 -4
- data/lib/rest-firebase.rb +31 -28
- data/rest-firebase.gemspec +34 -34
- data/test/test_api.rb +3 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abdca1643c16e51c16f42747eeba4eda9f1a9e91
|
4
|
+
data.tar.gz: e3f1d4518d893fd9882047410c8617fef616d257
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c28d6ac640f9146f4dd581a111fda8ebdda2cbd7341f437c42b21107b626d953e9904a555cfd99c11a74179eb6a77aaf009b7c2ba74a84b1267b48609a00ac5
|
7
|
+
data.tar.gz: 6c3f2e686c4e1ce85247810ec63a10af5dbf099c8e0a373f05223caac41ae0dc9dbb7f3c7b39b798fbcea6594ab177ffea37c2967fed293468f1e0014fe9b683
|
data/.travis.yml
CHANGED
@@ -1,11 +1,14 @@
|
|
1
|
-
|
1
|
+
sudo: false
|
2
2
|
language: ruby
|
3
3
|
rvm:
|
4
|
-
- 2.0
|
5
|
-
- 2.1
|
6
4
|
- 2.2
|
7
|
-
-
|
8
|
-
-
|
5
|
+
- 2.3.0
|
6
|
+
- rbx
|
7
|
+
- jruby-9
|
9
8
|
|
9
|
+
before_install:
|
10
|
+
- rvm get head
|
11
|
+
- rvm reload
|
12
|
+
- rvm use --install $TRAVIS_RUBY_VERSION --binary --latest
|
10
13
|
install: 'bundle install --retry=3'
|
11
|
-
script: 'ruby -
|
14
|
+
script: 'ruby -vr bundler/setup -S rake test'
|
data/CHANGES.md
CHANGED
data/Rakefile
CHANGED
@@ -2,21 +2,23 @@
|
|
2
2
|
begin
|
3
3
|
require "#{dir = File.dirname(__FILE__)}/task/gemgem"
|
4
4
|
rescue LoadError
|
5
|
-
sh 'git submodule update --init'
|
5
|
+
sh 'git submodule update --init --recursive'
|
6
6
|
exec Gem.ruby, '-S', $PROGRAM_NAME, *ARGV
|
7
7
|
end
|
8
8
|
|
9
|
-
|
9
|
+
%w[lib rest-builder/lib rest-builder/promise_pool/lib].each do |path|
|
10
|
+
$LOAD_PATH.unshift(File.expand_path("#{dir}/rest-core/#{path}"))
|
11
|
+
end
|
10
12
|
|
11
13
|
Gemgem.init(dir) do |s|
|
12
14
|
s.name = 'rest-firebase'
|
13
|
-
s.version = '1.0
|
15
|
+
s.version = '1.1.0'
|
14
16
|
s.homepage = 'https://github.com/CodementorIO/rest-firebase'
|
15
17
|
|
16
18
|
s.authors = ['Codementor', 'Lin Jen-Shin (godfat)']
|
17
19
|
s.email = ['help@codementor.io']
|
18
20
|
|
19
|
-
%w[rest-core].each{ |g| s.add_runtime_dependency(g, '>=
|
21
|
+
%w[rest-core].each{ |g| s.add_runtime_dependency(g, '>=4.0.0') }
|
20
22
|
|
21
23
|
# exclude rest-core
|
22
24
|
s.files.reject!{ |f| f.start_with?('rest-core/') }
|
data/lib/rest-firebase.rb
CHANGED
@@ -1,28 +1,30 @@
|
|
1
1
|
|
2
2
|
require 'rest-core'
|
3
|
+
require 'rest-core/util/json'
|
4
|
+
require 'rest-core/util/hmac'
|
3
5
|
|
4
6
|
# https://www.firebase.com/docs/security/custom-login.html
|
5
7
|
# https://www.firebase.com/docs/rest-api.html
|
6
8
|
# https://www.firebase.com/docs/rest/guide/retrieving-data.html#section-rest-queries
|
7
|
-
RestFirebase =
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
9
|
+
RestFirebase =
|
10
|
+
RestCore::Builder.client(:d, :secret, :auth, :auth_ttl, :iat) do
|
11
|
+
use RestCore::DefaultSite , 'https://SampleChat.firebaseIO-demo.com/'
|
12
|
+
use RestCore::DefaultHeaders, {'Accept' => 'application/json',
|
13
|
+
'Content-Type' => 'application/json'}
|
14
|
+
use RestCore::DefaultQuery , nil
|
15
|
+
use RestCore::JsonRequest , true
|
16
|
+
|
17
|
+
use RestCore::Retry , 0, RestCore::Retry::DefaultRetryExceptions
|
18
|
+
use RestCore::Timeout , 10
|
19
|
+
use RestCore::FollowRedirect, 5
|
20
|
+
use RestCore::ErrorHandler , lambda{|env| RestFirebase::Error.call(env)}
|
21
|
+
use RestCore::ErrorDetectorHttp
|
22
|
+
use RestCore::JsonResponse , true
|
23
|
+
use RestCore::CommonLogger , nil
|
24
|
+
use RestCore::Cache , nil, 600
|
25
|
+
end
|
23
26
|
|
24
27
|
class RestFirebase::Error < RestCore::Error
|
25
|
-
include RestCore
|
26
28
|
class ServerError < RestFirebase::Error; end
|
27
29
|
class ClientError < RestCore::Error; end
|
28
30
|
|
@@ -44,8 +46,9 @@ class RestFirebase::Error < RestCore::Error
|
|
44
46
|
end
|
45
47
|
|
46
48
|
def self.call env
|
47
|
-
error, code, url = env[RESPONSE_BODY],
|
48
|
-
env[
|
49
|
+
error, code, url = env[RestCore::RESPONSE_BODY],
|
50
|
+
env[RestCore::RESPONSE_STATUS],
|
51
|
+
env[RestCore::REQUEST_URI]
|
49
52
|
return new(error, code, url) unless error.kind_of?(Hash)
|
50
53
|
case code
|
51
54
|
when 400; BadRequest
|
@@ -63,12 +66,10 @@ class RestFirebase::Error < RestCore::Error
|
|
63
66
|
end
|
64
67
|
|
65
68
|
module RestFirebase::Client
|
66
|
-
include RestCore
|
67
|
-
|
68
69
|
class EventSource < RestCore::EventSource
|
69
70
|
def onmessage event=nil, data=nil, sock=nil
|
70
71
|
if event
|
71
|
-
super(event, Json.decode(data), sock)
|
72
|
+
super(event, RestCore::Json.decode(data), sock)
|
72
73
|
else
|
73
74
|
super
|
74
75
|
end
|
@@ -77,12 +78,13 @@ module RestFirebase::Client
|
|
77
78
|
|
78
79
|
def request env, a=app
|
79
80
|
check_auth
|
80
|
-
query = env[REQUEST_QUERY].inject({}) do |q, (k, v)|
|
81
|
-
q[k] = Json.encode(v)
|
81
|
+
query = env[RestCore::REQUEST_QUERY].inject({}) do |q, (k, v)|
|
82
|
+
q[k] = RestCore::Json.encode(v)
|
82
83
|
q
|
83
84
|
end
|
84
|
-
super(env.merge(REQUEST_PATH =>
|
85
|
-
|
85
|
+
super(env.merge(RestCore::REQUEST_PATH =>
|
86
|
+
"#{env[RestCore::REQUEST_PATH]}.json",
|
87
|
+
RestCore::REQUEST_QUERY => query), a)
|
86
88
|
end
|
87
89
|
|
88
90
|
def generate_auth opts={}
|
@@ -93,9 +95,10 @@ module RestFirebase::Client
|
|
93
95
|
header = {:typ => 'JWT', :alg => 'HS256'}
|
94
96
|
claims = {:v => 0, :iat => iat, :d => d}.merge(opts)
|
95
97
|
# http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-26
|
96
|
-
input = [header, claims].map{ |d| base64url(Json.encode(d)) }.
|
98
|
+
input = [header, claims].map{ |d| base64url(RestCore::Json.encode(d)) }.
|
99
|
+
join('.')
|
97
100
|
# http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-20
|
98
|
-
"#{input}.#{base64url(Hmac.sha256(secret, input))}"
|
101
|
+
"#{input}.#{base64url(RestCore::Hmac.sha256(secret, input))}"
|
99
102
|
end
|
100
103
|
|
101
104
|
def query
|
data/rest-firebase.gemspec
CHANGED
@@ -1,50 +1,50 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: rest-firebase 1.0
|
2
|
+
# stub: rest-firebase 1.1.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
|
-
s.name = "rest-firebase"
|
6
|
-
s.version = "1.0
|
5
|
+
s.name = "rest-firebase".freeze
|
6
|
+
s.version = "1.1.0"
|
7
7
|
|
8
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
|
-
s.require_paths = ["lib"]
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
|
+
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = [
|
11
|
-
"Codementor",
|
12
|
-
"Lin Jen-Shin (godfat)"]
|
13
|
-
s.date = "
|
14
|
-
s.description = "Ruby Firebase REST API client built on top of [rest-core][].\n\n[rest-core]: https://github.com/godfat/rest-core"
|
15
|
-
s.email = ["help@codementor.io"]
|
11
|
+
"Codementor".freeze,
|
12
|
+
"Lin Jen-Shin (godfat)".freeze]
|
13
|
+
s.date = "2016-02-04"
|
14
|
+
s.description = "Ruby Firebase REST API client built on top of [rest-core][].\n\n[rest-core]: https://github.com/godfat/rest-core".freeze
|
15
|
+
s.email = ["help@codementor.io".freeze]
|
16
16
|
s.files = [
|
17
|
-
".gitignore",
|
18
|
-
".gitmodules",
|
19
|
-
".travis.yml",
|
20
|
-
"CHANGES.md",
|
21
|
-
"Gemfile",
|
22
|
-
"LICENSE",
|
23
|
-
"README.md",
|
24
|
-
"Rakefile",
|
25
|
-
"TODO.md",
|
26
|
-
"doc/intro.md",
|
27
|
-
"example/daemon.rb",
|
28
|
-
"lib/rest-firebase.rb",
|
29
|
-
"rest-firebase.gemspec",
|
30
|
-
"task/README.md",
|
31
|
-
"task/gemgem.rb",
|
32
|
-
"test/test_api.rb"]
|
33
|
-
s.homepage = "https://github.com/CodementorIO/rest-firebase"
|
34
|
-
s.licenses = ["Apache License 2.0"]
|
35
|
-
s.rubygems_version = "2.5.
|
36
|
-
s.summary = "Ruby Firebase REST API client built on top of [rest-core][]."
|
37
|
-
s.test_files = ["test/test_api.rb"]
|
17
|
+
".gitignore".freeze,
|
18
|
+
".gitmodules".freeze,
|
19
|
+
".travis.yml".freeze,
|
20
|
+
"CHANGES.md".freeze,
|
21
|
+
"Gemfile".freeze,
|
22
|
+
"LICENSE".freeze,
|
23
|
+
"README.md".freeze,
|
24
|
+
"Rakefile".freeze,
|
25
|
+
"TODO.md".freeze,
|
26
|
+
"doc/intro.md".freeze,
|
27
|
+
"example/daemon.rb".freeze,
|
28
|
+
"lib/rest-firebase.rb".freeze,
|
29
|
+
"rest-firebase.gemspec".freeze,
|
30
|
+
"task/README.md".freeze,
|
31
|
+
"task/gemgem.rb".freeze,
|
32
|
+
"test/test_api.rb".freeze]
|
33
|
+
s.homepage = "https://github.com/CodementorIO/rest-firebase".freeze
|
34
|
+
s.licenses = ["Apache License 2.0".freeze]
|
35
|
+
s.rubygems_version = "2.5.2".freeze
|
36
|
+
s.summary = "Ruby Firebase REST API client built on top of [rest-core][].".freeze
|
37
|
+
s.test_files = ["test/test_api.rb".freeze]
|
38
38
|
|
39
39
|
if s.respond_to? :specification_version then
|
40
40
|
s.specification_version = 4
|
41
41
|
|
42
42
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
43
|
-
s.add_runtime_dependency(%q<rest-core
|
43
|
+
s.add_runtime_dependency(%q<rest-core>.freeze, [">= 4.0.0"])
|
44
44
|
else
|
45
|
-
s.add_dependency(%q<rest-core
|
45
|
+
s.add_dependency(%q<rest-core>.freeze, [">= 4.0.0"])
|
46
46
|
end
|
47
47
|
else
|
48
|
-
s.add_dependency(%q<rest-core
|
48
|
+
s.add_dependency(%q<rest-core>.freeze, [">= 4.0.0"])
|
49
49
|
end
|
50
50
|
end
|
data/test/test_api.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
|
2
2
|
require 'rest-firebase'
|
3
|
-
require 'rest-
|
3
|
+
require 'rest-builder/test'
|
4
4
|
|
5
5
|
Pork::API.describe RestFirebase do
|
6
6
|
before do
|
7
|
+
stub_select_for_stringio
|
7
8
|
stub(Time).now{ Time.at(86400) }
|
8
9
|
end
|
9
10
|
|
@@ -74,6 +75,7 @@ SSE
|
|
74
75
|
end
|
75
76
|
|
76
77
|
would 'refresh token' do
|
78
|
+
firebase # initialize http-client first (it's using Time.now too)
|
77
79
|
mock(Time).now{ Time.at(0) }
|
78
80
|
auth, query = firebase.auth, firebase.query
|
79
81
|
query[:auth].should.eq auth
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest-firebase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Codementor
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-02-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-core
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 4.0.0
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: 4.0.0
|
28
28
|
description: |-
|
29
29
|
Ruby Firebase REST API client built on top of [rest-core][].
|
30
30
|
|
@@ -71,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
71
|
version: '0'
|
72
72
|
requirements: []
|
73
73
|
rubyforge_project:
|
74
|
-
rubygems_version: 2.5.
|
74
|
+
rubygems_version: 2.5.2
|
75
75
|
signing_key:
|
76
76
|
specification_version: 4
|
77
77
|
summary: Ruby Firebase REST API client built on top of [rest-core][].
|