Sha256: 5e7d88f788189c95780523e85c1f71d4b2af07a4e1d3ccf82991ddb093d906d0
Contents?: true
Size: 1.89 KB
Versions: 2
Compression:
Stored size: 1.89 KB
Contents
require "httparty" require "dolly/bulk_document" module Dolly class Request include HTTParty DEFAULT_HOST = 'localhost' DEFAULT_PORT = '5984' attr_accessor :database_name, :host, :port, :bulk_document def initialize options = {} @host = options["host"] || DEFAULT_HOST @port = options["port"] || DEFAULT_PORT @database_name = options["name"] @username = options["username"] @password = options["password"] @bulk_document = Dolly::BulkDocument.new [] self.class.base_uri "#{protocol}://#{auth_info}#{host}:#{port}" end def get resource, data = nil q = {query: values_to_json(data)} if data request :get, resource, q end def put resource, data request :put, resource, {body: data} end def post resource, data request :post, resource, {body: data} end def delete resource request :delete, resource, {} end def protocol @protocol || 'http' end def uuids opts = {} tools("_uuids", opts)["uuids"] end private def tools path, opts = nil q = "?#{CGI.unescape(opts.to_query)}" unless opts.blank? JSON::parse self.class.get("/#{path}#{q}") end def auth_info return "" unless @username.present? "#{@username}:#{@password}@" end def values_to_json hash hash.reduce({}){|h, v| h[v.first] = v.last.to_json; h} end def full_path resource "/#{database_name}/#{resource}" end def request method, resource, data = nil data ||= {} headers = { 'Content-Type' => 'application/json' } response = self.class.send method, full_path(resource), data.merge(headers: headers) if response.code == 404 raise Dolly::ResourceNotFound elsif (500..600).include? response.code raise Dolly::ServerError else response end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dolly-0.5.1 | lib/dolly/request.rb |
dolly-0.5.0 | lib/dolly/request.rb |