class Picasa::Connection

Public Instance Methods

delete(params = {}) click to toggle source

@param [Hash] params request arguments @option params [String] :host host of request @option params [String] :path request path @option params [String] :query request url query @option params [String] :headers request headers

# File lib/picasa/connection.rb, line 35
def delete(params = {})
  exec_request(params) { |uri, options| HTTP.delete(uri, options) }
end
get(params = {}) click to toggle source

@param [Hash] params request arguments @option params [String] :host host of request @option params [String] :path request path @option params [String] :query request url query @option params [String] :headers request headers

# File lib/picasa/connection.rb, line 8
def get(params = {})
  exec_request(params) { |uri, options| HTTP.get(uri, options) }
end
patch(params = {}) click to toggle source
# File lib/picasa/connection.rb, line 24
def patch(params = {})
  params[:headers] ||= {}
  params[:headers]["Content-Type"] ||= "application/xml"
  exec_request(params) { |uri, options| HTTP.patch(uri,options) }
end
post(params = {}) click to toggle source

@param [Hash] params request arguments @option params [String] :host host of request @option params [String] :path request path @option params [String] :body request body (for POST) @option params [String] :query request url query @option params [String] :headers request headers

# File lib/picasa/connection.rb, line 18
def post(params = {})
  params[:headers] ||= {}
  params[:headers]["Content-Type"] ||= "application/atom+xml"
  exec_request(params) { |uri, options| HTTP.post(uri, options) }
end

Private Instance Methods

exec_request(params) { |uri, params| ... } click to toggle source

Additional params for HTTParty gem can be passed github.com/jnunemaker/httparty/blob/v0.12.0/lib/httparty.rb#L43

# File lib/picasa/connection.rb, line 43
def exec_request(params, &block)
  uri = "#{params.delete(:host)}#{params.delete(:path)}"

  params.tap do |p|
    p[:headers] = HTTP.headers.merge(p.fetch(:headers, {}))
    if p.keys.none? { |name| [:http_proxyaddr, :http_proxyport, :http_proxyuser, :http_proxypass].include?(name) }
      p[:http_proxyaddr] = proxy_uri.host
      p[:http_proxyport] = proxy_uri.port
      p[:http_proxyuser] = proxy_uri.user
      p[:http_proxypass] = proxy_uri.password
    end
  end

  handle_response(yield(uri, params))
end
handle_response(response) click to toggle source
# File lib/picasa/connection.rb, line 59
def handle_response(response)
  case response.code.to_i
  when 200...300
    response
  when 400
    raise BadRequestError.new(response.body, response)
  when 403
    raise ForbiddenError.new(response.body, response)
  when 404
    raise NotFoundError.new(response.body, response)
  when 412
    raise PreconditionFailedError.new(response.body, response)
  else
    raise ResponseError.new(response.body, response)
  end
end
proxy_uri() click to toggle source
# File lib/picasa/connection.rb, line 76
def proxy_uri
  @proxy_uri ||= URI.parse(ENV["https_proxy"] || ENV["HTTPS_PROXY"] || "")
end