Sha256: 0bb6678b393d300d1dc12da321a464fbcba5dc59709d39ca983dde5186b226a6

Contents?: true

Size: 1.1 KB

Versions: 12

Compression:

Stored size: 1.1 KB

Contents

module Garb
  class DataRequest
    class ClientError < StandardError; end

    def initialize(session, base_url, parameters={})
      @session = session
      @base_url = base_url
      @parameters = parameters
    end

    def query_string
      parameter_list = @parameters.map {|k,v| "#{k}=#{v}" }
      parameter_list.empty? ? '' : "?#{parameter_list.join('&')}"
    end

    def uri
      URI.parse(@base_url)
    end

    def send_request
      response = if @session.single_user?
        single_user_request
      elsif @session.oauth_user?
        oauth_user_request
      end

      raise ClientError, response.body.inspect unless response.kind_of?(Net::HTTPSuccess)
      response
    end

    def single_user_request
      http = Net::HTTP.new(uri.host, uri.port)
      http.use_ssl = true
      http.verify_mode = OpenSSL::SSL::VERIFY_NONE
      http.get("#{uri.path}#{query_string}", {'Authorization' => "GoogleLogin auth=#{@session.auth_token}", 'GData-Version' => '2'})
    end

    def oauth_user_request
      @session.access_token.get("#{uri}#{query_string}", {'GData-Version' => '2'})
    end
  end
end

Version data entries

12 entries across 12 versions & 3 rubygems

Version Path
readmedia-garb-0.9.1.1 lib/garb/data_request.rb
vanity-1.7.1 vendor/ruby/1.9.1/gems/garb-0.9.1/lib/garb/data_request.rb
garb-0.9.1 lib/garb/data_request.rb
garb-0.9.0 lib/garb/data_request.rb
garb-0.8.5 lib/garb/data_request.rb
garb-0.8.4 lib/garb/data_request.rb
garb-0.8.3 lib/garb/data_request.rb
garb-0.8.2 lib/garb/data_request.rb
garb-0.8.1 lib/garb/data_request.rb
garb-0.8.0 lib/garb/data_request.rb
garb-0.7.6 lib/garb/data_request.rb
garb-0.7.5 lib/garb/data_request.rb