class DoneDone::Http

Attributes

_debug[R]
_request[R]
data[R]
domain[R]
files[R]
get_class[R]
http_class[R]
method_url[R]
multipart_post_class[R]
post_class[R]
put_class[R]
ssl_verify_mode[R]
ssl_version[R]

Public Class Methods

new(domain, username, password, options={}) click to toggle source
# File lib/donedone/http.rb, line 14
def initialize(domain, username, password, options={})
  @domain = domain
  @_username = username
  @_password = password

  @put_class = options[:put_class] || Net::HTTP::Put
  @get_class = options[:get_class] || Net::HTTP::Get
  @post_class = options[:post_class] || Net::HTTP::Post
  @multipart_post_class = options[:multipart_post_class] || Multipart::Post
  @http_class = options[:http_class] || Net::HTTP
  @ssl_verify_mode = options[:ssl_verify_mode] || Constant::SSL_VERIFY_MODE
  @ssl_version = options[:ssl_version] || Constant::SSL_VERSION
end

Public Instance Methods

get(method_url, options={}) click to toggle source
# File lib/donedone/http.rb, line 46
def get(method_url, options={})
  @method_url = method_url
  reset(options)
  request(get_class)
end
host() click to toggle source
# File lib/donedone/http.rb, line 39
def host
  unless @host
    @host = Constant.url_for('HOST', domain)
  end
  @host
end
post(method_url, options={}) click to toggle source
# File lib/donedone/http.rb, line 60
def post(method_url, options={})
  @method_url = method_url
  reset(options)
  request(post_class) do
    files ? append_multipart_data : append_any_form_data
  end
end
put(method_url, options={}) click to toggle source
# File lib/donedone/http.rb, line 52
def put(method_url, options={})
  @method_url = method_url
  reset(options)
  request(put_class) do
    append_any_form_data
  end
end
reset(options = {}) click to toggle source
# File lib/donedone/http.rb, line 28
def reset(options = {})
  @data = options[:data]
  @files = options[:files]
  @_request = nil
  @uri = nil
  @base_url = nil
  @host = nil
  @http = nil
  @_debug = options.has_key?(:debug) ? options[:debug] : false
end

Private Instance Methods

append_any_form_data() click to toggle source
# File lib/donedone/http.rb, line 108
def append_any_form_data #(data=data)
  if data
    debug { "form_data: #{data.inspect}" }
    _request.set_form_data(data)
  end
end
append_multipart_data() click to toggle source
# File lib/donedone/http.rb, line 115
def append_multipart_data #(files=files, data=data)
  body, content_type, useragent =
    multipart_post_class.prepare_query( files.merge(data) )

  debug { "params: #{params.inspect}; body: #{body.inspect}, content_type: #{content_type.inspect}, useragent: #{useragent.inspect}" }
  @_request.content_type = content_type
  @_request.content_length = body.size
  @_request["User-Agent"] = useragent

  @_request.body = body
end
base_url() click to toggle source
# File lib/donedone/http.rb, line 81
def base_url
  unless @base_url
    @base_url = Constant.url_for('BASE_URL', host)
  end
  @base_url
end
debug() { || ... } click to toggle source
# File lib/donedone/http.rb, line 127
def debug
  puts(yield) if _debug && block_given?
end
http() click to toggle source
# File lib/donedone/http.rb, line 71
def http
  unless @http
    @http = http_class.new(uri.host, uri.port)
    @http.use_ssl = true
    @http.verify_mode = ssl_verify_mode
    @http.ssl_version = ssl_version
  end
  @http
end
request(method_class) { || ... } click to toggle source
# File lib/donedone/http.rb, line 95
def request(method_class)
  debug { "#{method_class.name}, #{uri.request_uri.inspect} - host: #{uri.host}, - port: #{uri.port}" }
  @_request = method_class.new(uri.request_uri)

  yield if block_given?

  debug { "uri: #{uri.inspect}, files: #{files.inspect}" }
  _request.basic_auth(@_username, @_password)

  debug { "request: #{_request.to_hash.inspect}" }
  http.request(_request)
end
uri() click to toggle source
# File lib/donedone/http.rb, line 88
def uri
  unless @uri
    @uri = URI.parse("#{base_url}#{method_url}")
  end
  @uri
end