Module: Couch::BasicRequest

Included in:
Server
Defined in:
lib/couch.rb

Defined Under Namespace

Modules: Get, Head

Instance Method Summary collapse

Instance Method Details

#create_postfix(query_params, default = '') ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/couch.rb', line 66

def create_postfix(query_params, default='')
  if query_params
    params_a = []
    query_params.each do |key, value|
      params_a << "#{key}=#{value}"
    end
    postfix = "?#{params_a.join('&')}"
  else
    postfix = default
  end
  postfix
end

#delete(uri, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false) ⇒ Object



19
20
21
22
23
# File 'lib/couch.rb', line 19

def delete(uri, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false)
  req=Net::HTTP::Delete.new(uri)
  req.basic_auth @options[:name], @options[:password]
  request(req, open_timeout: open_timeout, read_timeout: read_timeout, fail_silent: fail_silent)
end

#get(uri, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false) ⇒ Object



31
32
33
34
35
# File 'lib/couch.rb', line 31

def get(uri, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false)
  req = Net::HTTP::Get.new(uri)
  req.basic_auth @options[:name], @options[:password]
  request(req, open_timeout: open_timeout, read_timeout: read_timeout, fail_silent: fail_silent)
end

#handle_error(req, res) ⇒ Object

Raises:

  • (RuntimeError)


79
80
81
# File 'lib/couch.rb', line 79

def handle_error(req, res)
  raise RuntimeError.new("#{res.code}:#{res.message}\nMETHOD:#{req.method}\nURI:#{req.path}\n#{res.body}")
end

#head(uri, open_timeout: 5*30, read_timeout: 5*30, fail_silent: true) ⇒ Object



25
26
27
28
29
# File 'lib/couch.rb', line 25

def head(uri, open_timeout: 5*30, read_timeout: 5*30, fail_silent: true)
  req = Net::HTTP::Head.new(uri)
  req.basic_auth @options[:name], @options[:password]
  request(req, open_timeout: open_timeout, read_timeout: read_timeout, fail_silent: fail_silent)
end

#post(uri, json, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false) ⇒ Object



41
42
43
# File 'lib/couch.rb', line 41

def post(uri, json, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false)
  posty_request(json, Net::HTTP::Post.new(uri), open_timeout: open_timeout, read_timeout: read_timeout, fail_silent: fail_silent)
end

#posty_request(json, req, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false) ⇒ Object



45
46
47
48
49
50
# File 'lib/couch.rb', line 45

def posty_request(json, req, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false)
  req.basic_auth @options[:name], @options[:password]
  req['Content-Type'] = 'application/json;charset=utf-8'
  req.body = json
  request(req, open_timeout: open_timeout, read_timeout: read_timeout, fail_silent: fail_silent)
end

#put(uri, json, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false) ⇒ Object



37
38
39
# File 'lib/couch.rb', line 37

def put(uri, json, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false)
  posty_request(json, Net::HTTP::Put.new(uri), open_timeout: open_timeout, read_timeout: read_timeout, fail_silent: fail_silent)
end

#request(req, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/couch.rb', line 52

def request(req, open_timeout: 5*30, read_timeout: 5*30, fail_silent: false)
  res = Net::HTTP.start(@url.host, @url.port,
                        :use_ssl => @url.scheme =='https') do |http|
    http.open_timeout = open_timeout
    http.read_timeout = read_timeout
    http.request(req)
  end
  unless fail_silent or res.kind_of?(Net::HTTPSuccess)
    # puts "CouchDb responsed with error code #{res.code}"
    handle_error(req, res)
  end
  res
end