class Cloudant::Connection

Attributes

base_uri[R]
cookies[RW]
password[R]
username[R]

Public Class Methods

new(args) click to toggle source
# File lib/cloudant/connection.rb, line 6
def initialize(args)
  @username = args[:username]
  @password = args[:password]
  @base_uri = args[:base_uri]
end

Public Instance Methods

close() click to toggle source
# File lib/cloudant/connection.rb, line 32
def close
  query({url_path: "_session", method: :delete})
end
query(args) click to toggle source
# File lib/cloudant/connection.rb, line 12
def query(args)
  base     = URI.parse("#{base_uri}#{args[:url_path]}")
  http     = Net::HTTP.new(base.host, 80)
  request  = new_net_http_crud(args[:method],base)
  
  args[:opts] ? opts = args[:opts] : opts = { "Cookie" => cookies }

  request.body            = JSON.generate(opts)
  request['Cookie']       = cookies
  request["Content-Type"] = "application/json"
  response                = http.request(request)

  JSON.parse(response.body)    
end

Private Instance Methods

get_cookies(response) click to toggle source
# File lib/cloudant/connection.rb, line 46
def get_cookies(response)
  headers = response.headers
  cookies = headers[:set_cookie] if headers && headers.is_a?(Hash)
  cookies.is_a?(Array) ? cookie = cookies.first : cookie = cookies
  cookie
end
new_net_http_crud(method,base) click to toggle source
# File lib/cloudant/connection.rb, line 37
def new_net_http_crud(method,base)
  method = method.to_sym.capitalize
  Net::HTTP.const_get(method).new(base.request_uri)
end
session_params() click to toggle source
# File lib/cloudant/connection.rb, line 53
def session_params
  {
    username: username, 
    password: password, 
    "Content-Type" => "application/x-www-form-urlencoded", 
    "Accept" => "*/*"
  }
end
start_session() click to toggle source
# File lib/cloudant/connection.rb, line 42
def start_session
  RestClient.post("#{base_uri}_session", session_params)
end