module SimpleUri
Constants
- MODES
- VERSION
Public Class Methods
connect(url='', method=nil, options={ params: nil, user: nil, password: nil, debug: debug_mode })
click to toggle source
# File lib/simple_uri.rb, line 13 def connect(url='', method=nil, options={ params: nil, user: nil, password: nil, debug: debug_mode }) uri = URI.parse(URI.encode(prepare_url(url))) http = Net::HTTP.new(uri.host, uri.port) http.read_timeout = 1000 debug_http(http) if url.match(/^https/) debug_msg 'Use SSL' http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE end req = "Net::HTTP::#{method.to_s.capitalize}".constantize.new(uri.path+options[:params].to_s) if options[:user] && options[:password] req.basic_auth options[:user], options[:password] debug_msg 'Basic auth' end [req, http] end
req(url=nil, method=:get, options={ params: nil, req_body: nil, req_headers: nil, user: nil, password: nil, debug: debug_mode, autofix: autofix_mode, cookies: false })
Alias for: send_request
send_request(url=nil, method=:get, options={ params: nil, req_body: nil, req_headers: nil, user: nil, password: nil, debug: debug_mode, autofix: autofix_mode, cookies: false })
click to toggle source
# File lib/simple_uri.rb, line 31 def send_request(url=nil, method=:get, options={ params: nil, req_body: nil, req_headers: nil, user: nil, password: nil, debug: debug_mode, autofix: autofix_mode, cookies: false }) enable_debug_mode(options[:debug]) enable_autofix_mode(options[:autofix]) get_params = options[:req_body] ? '?'+prepare_req_body(options[:req_body]).to_s : '' options[:params] = (method==:post || method==:put) ? nil : get_params req, http = connect(url, method, { params: options[:params], user: options[:user], password: options[:password], debug: options[:debug] }) req.body = prepare_req_body(options[:req_body]) if (method==:post || method==:put) options[:req_headers].each { |k, v| req[k] = v } if options[:req_headers] res = http.request(req) res.body res_body = begin JSON.parse(res.body) rescue debug_msg 'Can\'t convert response to JSON' res.body end options[:cookies] ? { body: res_body, cookies: res.response['set-cookie'] } : res_body end
Also aliased as: req
Private Class Methods
autofix_mode(mode=nil)
click to toggle source
# File lib/simple_uri.rb, line 97 def autofix_mode(mode=nil) MODES[:autofix]=mode unless mode.nil? MODES[:autofix] end
debug_http(http)
click to toggle source
# File lib/simple_uri.rb, line 84 def debug_http(http) http.set_debug_output(debug_output) if debug_mode end
debug_mode(mode=nil)
click to toggle source
# File lib/simple_uri.rb, line 92 def debug_mode(mode=nil) MODES[:debug]=mode unless mode.nil? MODES[:debug] end
debug_msg(msg)
click to toggle source
# File lib/simple_uri.rb, line 80 def debug_msg(msg) @log.debug(msg) if @log && debug_mode end
debug_output()
click to toggle source
# File lib/simple_uri.rb, line 88 def debug_output STDOUT end
enable_autofix_mode(enabled)
click to toggle source
# File lib/simple_uri.rb, line 76 def enable_autofix_mode(enabled) autofix_mode(true) if enabled end
enable_debug_mode(enabled)
click to toggle source
# File lib/simple_uri.rb, line 68 def enable_debug_mode(enabled) if enabled debug_mode(true) @log = Logger.new(debug_output) @log.level = Logger::DEBUG end end
prepare_req_body(body)
click to toggle source
# File lib/simple_uri.rb, line 53 def prepare_req_body(body) (body.is_a?(Hash))? URI.encode_www_form(body) : body end
prepare_url(url)
click to toggle source
# File lib/simple_uri.rb, line 57 def prepare_url(url) if autofix_mode m = url.match(/http(s)?:\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.\w{2,5}(:\d+)?\/([1-9.\w])+(.{0})/) #TODO if m && m[0]==url && url[-1] != '/' url += '/' debug_msg 'Append \'/\' to url.' end end url end