Module: Micky

Defined in:
lib/micky.rb,
lib/micky/uri.rb,
lib/micky/errors.rb,
lib/micky/request.rb,
lib/micky/version.rb,
lib/micky/response.rb

Defined Under Namespace

Modules: URI Classes: ClientError, Error, HTTPClientError, HTTPServerError, HostError, InvalidURIError, NoRedirectLocation, Request, Response, ServerError, TooManyRedirects

Constant Summary collapse

DEFAULTS =
{
  raise_errors: false,
  max_redirects: 20,
  timeout: 10,
  skip_resolve: false,
  resolve_timeout: 5,
  oauth: {},
  query: {},
  headers: {},
  parsers: {
    'application/json' => -> (body) {
      require 'json' unless defined? JSON
      JSON.parse(body) rescue nil
    }
  },
  logger: Logger.new(STDOUT),
}
HTTP_URI_REGEX =
%r{\Ahttps?:/+}
VERSION =
'0.7.0'

Class Method Summary collapse

Class Method Details

.get(uri, opts = {}) ⇒ Object



39
40
41
# File 'lib/micky.rb', line 39

def self.get(uri, opts = {})
  Request.new(opts).get(uri)
end

.head(uri, opts = {}) ⇒ Object



43
44
45
# File 'lib/micky.rb', line 43

def self.head(uri, opts = {})
  Request.new(opts).head(uri)
end

.URI(uri) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/micky/uri.rb', line 6

def self.URI(uri)
  uri = uri.to_s.strip
  if uri =~ HTTP_URI_REGEX
    # Replace any number of slashes (1, 3 or 4579) by two slashes
    uri.sub! %r{/+}, '//'.freeze
  else
    uri.sub! %r{/+}, ''.freeze
    uri = "http://#{uri}"
  end
  uri = begin
    ::URI.parse(uri)
  rescue ::URI::InvalidURIError
    begin
      ::URI.parse(::URI::Parser.new.escape(uri))
    rescue ::URI::InvalidURIError
    end
  end
  uri if uri&.host
end