class SimpleFirebase::Client

Constants

DEFAULT_PAGE_SIZE

Attributes

key[R]
uri[R]

Public Class Methods

new(uri, key) click to toggle source
# File lib/simple_firebase/client.rb, line 12
def initialize(uri, key)
  @uri = uri
  @key = key
end

Public Instance Methods

fetch(resource, key, value, page_size) click to toggle source
# File lib/simple_firebase/client.rb, line 30
def fetch(resource, key, value, page_size)
  uri = construct_uri(resource, key, value, page_size)

  r = SimpleFirebase::Response.new(Net::HTTP.get_response(uri))

  raise SimpleFirebase::Exceptions::FirebaseError r.body unless r.success?

  r.json_body
end
fetch_single(resource, key, value) click to toggle source
# File lib/simple_firebase/client.rb, line 17
def fetch_single(resource, key, value)
  raw = fetch(resource, key, value, 1).values.first
  if raw
    if raw[key] == value
      raw
    else
      nil
    end
  else
    nil
  end
end

Private Instance Methods

construct_uri(resource, order_by, start_at, page_size) click to toggle source
# File lib/simple_firebase/client.rb, line 42
def construct_uri(resource, order_by, start_at, page_size)
  q = { auth: @key, limitToFirst: page_size || DEFAULT_PAGE_SIZE }
  q[:orderBy] = '"' + order_by + '"' if order_by
  q[:startAt] = '"' + start_at.to_s + '"'

  uri = URI("#{@uri}#{resource}.json")
  uri.query = URI.encode_www_form q

  uri
end