module RestFirebase::Client
Public Instance Methods
generate_auth(opts={})
click to toggle source
# File lib/rest-firebase.rb, line 90 def generate_auth opts={} raise RestFirebase::Error::ClientError.new( "Please set your secret") unless secret self.iat = nil header = {:typ => 'JWT', :alg => 'HS256'} claims = {:v => 0, :iat => iat, :d => d}.merge(opts) # http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-26 input = [header, claims].map{ |d| base64url(RestCore::Json.encode(d)) }. join('.') # http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-20 "#{input}.#{base64url(RestCore::Hmac.sha256(secret, input))}" end
query()
click to toggle source
# File lib/rest-firebase.rb, line 104 def query {:auth => auth} end
request(env, a=app)
click to toggle source
Calls superclass method
# File lib/rest-firebase.rb, line 79 def request env, a=app check_auth query = env[RestCore::REQUEST_QUERY].inject({}) do |q, (k, v)| q[k] = RestCore::Json.encode(v) q end super(env.merge(RestCore::REQUEST_PATH => "#{env[RestCore::REQUEST_PATH]}.json", RestCore::REQUEST_QUERY => query), a) end
Private Instance Methods
base64url(str;)
click to toggle source
# File lib/rest-firebase.rb, line 109 def base64url str; [str].pack('m0').tr('+/', '-_'); end
check_auth()
click to toggle source
# File lib/rest-firebase.rb, line 114 def check_auth self.auth = nil if auth_ttl && Time.now.to_i - iat > auth_ttl end
default_auth()
click to toggle source
# File lib/rest-firebase.rb, line 110 def default_auth ; generate_auth ; end
default_auth_ttl()
click to toggle source
# File lib/rest-firebase.rb, line 111 def default_auth_ttl; 82800 ; end
default_iat()
click to toggle source
# File lib/rest-firebase.rb, line 112 def default_iat ; Time.now.to_i ; end