Sha256: 5f4a2b2440ad670a57613a69fe56ef23d3f8034cc44fc9c7560783e724ac7d8d

Contents?: true

Size: 1.23 KB

Versions: 3

Compression:

Stored size: 1.23 KB

Contents

require 'typhoeus'
require 'json'
require 'open-uri'
require 'uri'

module Firebase
  class Request

    attr_reader :base_uri

    def initialize(base_uri)
      @base_uri = base_uri
    end

    def get(path, query_options)
      process(:get, path, nil, query_options)
    end

    def put(path, value, query_options)
      process(:put, path, value.to_json, query_options)
    end

    def post(path, value, query_options)
      process(:post, path, value.to_json, query_options)
    end

    def delete(path, query_options)
      process(:delete, path, nil, query_options)
    end

    def patch(path, value, query_options)
      process(:patch, path, value.to_json, query_options)
    end

    def build_url(path)
      path = "#{path}.json"
      url = URI.join(base_uri, path)

      url.to_s
    end

    private

    def process(method, path, body=nil, query_options={})
      @@hydra ||= Typhoeus::Hydra.new
      request = Typhoeus::Request.new(build_url(path),
                                      :body => body,
                                      :method => method,
                                      :params => query_options)
      @@hydra.queue(request)
      @@hydra.run

      Firebase::Response.new(request.response)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

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