rest-firebase 0.9.2 → 0.9.3
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/CHANGES.md +7 -0
- data/README.md +6 -0
- data/Rakefile +2 -2
- data/lib/rest-firebase.rb +11 -10
- data/rest-firebase.gemspec +6 -6
- data/test/test_api.rb +5 -5
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 958b43ae367f1f450bc52b507ef98a72216a0a07
|
4
|
+
data.tar.gz: 6c37c91216017e9b2c35d8f97607d055a9336c4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 336e0c017f944ea20b2b006229694d61efe40abf157312efdbaee219291cbfb18bbc95513182b15c6a9ea85e46d290835564b03e5733c4d3bf0e9998c89004d5
|
7
|
+
data.tar.gz: ee75ad502085b86c6fc675cf8c8ce8e72b9a068511970fd59289ae6e3712229e427f7028259c98ce0aabea99d65ff962f877ec407999465f33d74832d69ee7cb
|
data/CHANGES.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# CHANGES
|
2
2
|
|
3
|
+
## rest-firebase 0.9.3 -- 2014-08-25
|
4
|
+
|
5
|
+
* Adopted rest-core 3.3.0
|
6
|
+
* Introduce `RestFirebase#auth_ttl` to setup when to refresh the auth token.
|
7
|
+
Default to 23 hours (82800 seconds)
|
8
|
+
* Properly refresh the auth token by resetting `RestFirebase#iat`.
|
9
|
+
|
3
10
|
## rest-firebase 0.9.2 -- 2014-08-06
|
4
11
|
|
5
12
|
* Now it would auto-refresh auth if it's also expired (>= 23 hours)
|
data/README.md
CHANGED
@@ -65,6 +65,12 @@ f = RestFirebase.new :site => 'https://SampleChat.firebaseIO-demo.com/',
|
|
65
65
|
:secret => 'secret',
|
66
66
|
:d => {:auth_data => 'something'},
|
67
67
|
:log_method => method(:puts),
|
68
|
+
# `auth_ttl` describes when we should refresh the auth
|
69
|
+
# token. Set it to `false` to disable auto-refreshing.
|
70
|
+
# The default is 23 hours.
|
71
|
+
:auth_ttl => 82800,
|
72
|
+
# `auth` is the auth token from Firebase. Leave it alone
|
73
|
+
# to auto-generate. Set it to `false` to disable it.
|
68
74
|
:auth => false # Ignore auth for this example!
|
69
75
|
|
70
76
|
@reconnect = true
|
data/Rakefile
CHANGED
@@ -10,13 +10,13 @@ $LOAD_PATH.unshift(File.expand_path("#{dir}/rest-core/lib"))
|
|
10
10
|
|
11
11
|
Gemgem.init(dir) do |s|
|
12
12
|
s.name = 'rest-firebase'
|
13
|
-
s.version = '0.9.
|
13
|
+
s.version = '0.9.3'
|
14
14
|
s.homepage = 'https://github.com/CodementorIO/rest-firebase'
|
15
15
|
|
16
16
|
s.authors = ['Codementor', 'Lin Jen-Shin (godfat)']
|
17
17
|
s.email = ['help@codementor.io']
|
18
18
|
|
19
|
-
%w[rest-core].each{ |g| s.add_runtime_dependency(g, '>=3.
|
19
|
+
%w[rest-core].each{ |g| s.add_runtime_dependency(g, '>=3.3.0') }
|
20
20
|
|
21
21
|
# exclude rest-core
|
22
22
|
s.files.reject!{ |f| f.start_with?('rest-core/') }
|
data/lib/rest-firebase.rb
CHANGED
@@ -3,7 +3,7 @@ require 'rest-core'
|
|
3
3
|
|
4
4
|
# https://www.firebase.com/docs/security/custom-login.html
|
5
5
|
# https://www.firebase.com/docs/rest-api.html
|
6
|
-
RestFirebase = RC::Builder.client(:d, :secret, :auth, :iat) do
|
6
|
+
RestFirebase = RC::Builder.client(:d, :secret, :auth, :auth_ttl, :iat) do
|
7
7
|
use RC::Timeout , 10
|
8
8
|
|
9
9
|
use RC::DefaultSite , 'https://SampleChat.firebaseIO-demo.com/'
|
@@ -13,11 +13,10 @@ RestFirebase = RC::Builder.client(:d, :secret, :auth, :iat) do
|
|
13
13
|
|
14
14
|
use RC::FollowRedirect, 1
|
15
15
|
use RC::CommonLogger , nil
|
16
|
-
use RC::
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
16
|
+
use RC::ErrorHandler , lambda{ |env| RestFirebase::Error.call(env) }
|
17
|
+
use RC::ErrorDetectorHttp
|
18
|
+
use RC::JsonResponse , true
|
19
|
+
use RC::Cache , nil, 600
|
21
20
|
end
|
22
21
|
|
23
22
|
class RestFirebase::Error < RestCore::Error
|
@@ -91,6 +90,7 @@ module RestFirebase::Client
|
|
91
90
|
raise RestFirebase::Error::ClientError.new(
|
92
91
|
"Please set your secret") unless secret
|
93
92
|
|
93
|
+
self.iat = nil
|
94
94
|
header = {:typ => 'JWT', :alg => 'HS256'}
|
95
95
|
claims = {:v => 0, :iat => iat, :d => d}.merge(opts)
|
96
96
|
# http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-26
|
@@ -101,12 +101,13 @@ module RestFirebase::Client
|
|
101
101
|
|
102
102
|
private
|
103
103
|
def base64url str; [str].pack('m').tr('+/', '-_'); end
|
104
|
-
def default_query; {:auth => auth}; end
|
105
|
-
def default_auth
|
106
|
-
def
|
104
|
+
def default_query ; {:auth => auth}; end
|
105
|
+
def default_auth ; generate_auth ; end
|
106
|
+
def default_auth_ttl; 82800 ; end
|
107
|
+
def default_iat ; Time.now.to_i ; end
|
107
108
|
|
108
109
|
def check_auth
|
109
|
-
self.auth = nil if
|
110
|
+
self.auth = nil if auth_ttl && Time.now.to_i - iat > auth_ttl
|
110
111
|
end
|
111
112
|
end
|
112
113
|
|
data/rest-firebase.gemspec
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: rest-firebase 0.9.
|
2
|
+
# stub: rest-firebase 0.9.3 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "rest-firebase"
|
6
|
-
s.version = "0.9.
|
6
|
+
s.version = "0.9.3"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib"]
|
10
10
|
s.authors = [
|
11
11
|
"Codementor",
|
12
12
|
"Lin Jen-Shin (godfat)"]
|
13
|
-
s.date = "2014-08-
|
13
|
+
s.date = "2014-08-25"
|
14
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
15
|
s.email = ["help@codementor.io"]
|
16
16
|
s.files = [
|
@@ -39,11 +39,11 @@ Gem::Specification.new do |s|
|
|
39
39
|
s.specification_version = 4
|
40
40
|
|
41
41
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
42
|
-
s.add_runtime_dependency(%q<rest-core>, [">= 3.
|
42
|
+
s.add_runtime_dependency(%q<rest-core>, [">= 3.3.0"])
|
43
43
|
else
|
44
|
-
s.add_dependency(%q<rest-core>, [">= 3.
|
44
|
+
s.add_dependency(%q<rest-core>, [">= 3.3.0"])
|
45
45
|
end
|
46
46
|
else
|
47
|
-
s.add_dependency(%q<rest-core>, [">= 3.
|
47
|
+
s.add_dependency(%q<rest-core>, [">= 3.3.0"])
|
48
48
|
end
|
49
49
|
end
|
data/test/test_api.rb
CHANGED
@@ -4,7 +4,7 @@ require 'rest-core/test'
|
|
4
4
|
|
5
5
|
Pork::API.describe RestFirebase do
|
6
6
|
before do
|
7
|
-
stub(Time).now{ Time.at(
|
7
|
+
stub(Time).now{ Time.at(86400) }
|
8
8
|
end
|
9
9
|
|
10
10
|
after do
|
@@ -12,13 +12,13 @@ Pork::API.describe RestFirebase do
|
|
12
12
|
Muack.verify
|
13
13
|
end
|
14
14
|
|
15
|
-
path = 'https://a.json?auth=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9%0A.
|
15
|
+
path = 'https://a.json?auth=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9%0A.eyJ2IjowLCJpYXQiOjg2NDAwLCJkIjpudWxsfQ%3D%3D%0A.cAZWmKD66jARF-BXEi5J1aqJ6khDbFdPAfAqXVbGpZk%3D%0A'
|
16
16
|
|
17
17
|
json = '{"status":"ok"}'
|
18
18
|
rbon = {'status' => 'ok'}
|
19
19
|
|
20
20
|
def firebase
|
21
|
-
RestFirebase.new(:secret => 'nnf')
|
21
|
+
@firebase ||= RestFirebase.new(:secret => 'nnf')
|
22
22
|
end
|
23
23
|
|
24
24
|
would 'get true' do
|
@@ -60,10 +60,10 @@ SSE
|
|
60
60
|
end
|
61
61
|
|
62
62
|
would 'refresh token' do
|
63
|
-
mock(Time).now{ Time.at(
|
63
|
+
mock(Time).now{ Time.at(0) }
|
64
64
|
auth = firebase.auth
|
65
65
|
Muack.verify(Time)
|
66
|
-
stub(Time).now{ Time.at(
|
66
|
+
stub(Time).now{ Time.at(86400) }
|
67
67
|
|
68
68
|
stub_request(:get, path).to_return(:body => 'true')
|
69
69
|
firebase.get('https://a').should.eq true
|
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: 0.9.
|
4
|
+
version: 0.9.3
|
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: 2014-08-
|
12
|
+
date: 2014-08-25 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: 3.
|
20
|
+
version: 3.3.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: 3.
|
27
|
+
version: 3.3.0
|
28
28
|
description: |-
|
29
29
|
Ruby Firebase REST API client built on top of [rest-core][].
|
30
30
|
|