Sha256: 3b6f3a8e5413b5f59cd595bbc1be876a521920ea0dd12cdf85a0f3111ddececf

Contents?: true

Size: 1.49 KB

Versions: 2

Compression:

Stored size: 1.49 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)
      if auth
        { :auth => auth }.merge(query)
      else
        query
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
firebase-0.2.2 lib/firebase.rb
firebase-0.2.1 lib/firebase.rb