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