Sha256: f23bfbbb183903c74ef22b8494e9707d3d38d13d90f5e3401433406a58b3cedd

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

module Firebase
  class Client

    require 'firebase/request'
    require 'firebase/response'

    def self.format_uri(other)
      if other
        other.end_with?("/") ? other : other + '/'
      end
    end

    attr_reader :auth, :request

    def initialize(base_uri, auth=nil)
      uri = Firebase::Client.format_uri(base_uri)
      @request = Firebase::Request.new(uri)
      @auth = auth
    end

    # Writes and returns the data
    #   Firebase.set('users/info', { 'name' => 'Oscar' }) => { 'name' => 'Oscar' }
    def set(path, data, query={})
      request.put(path, data, query_options(query))
    end

    # Returns the data at path
    def get(path, query={})
      request.get(path, query_options(query))
    end

    # Writes the data, returns the key name of the data added
    #   Firebase.push('users', { 'age' => 18}) => {"name":"-INOQPH-aV_psbk3ZXEX"}
    def push(path, data, query={})
      request.post(path, data, query_options(query))
    end

    # Deletes the data at path and returs true
    def delete(path, query={})
      request.delete(path, query_options(query))
    end

    # Write the data at path but does not delete ommited children. Returns the data
    #   Firebase.update('users/info', { 'name' => 'Oscar' }) => { 'name' => 'Oscar' }
    def update(path, data, query={})
      request.patch(path, data, query_options(query))
    end

    private

    def query_options(query)
      { :auth => auth }.merge(query)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
firebase-0.2.0 lib/firebase.rb