Class: Neko::HTTP

Inherits:
Object
  • Object
show all
Defined in:
lib/neko-http.rb

Constant Summary collapse

METHOD_HTTP_CLASS =
{
  get: Net::HTTP::Get,
  put: Net::HTTP::Put,
  patch: Net::HTTP::Patch,
  post: Net::HTTP::Post,
  delete: Net::HTTP::Delete
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url, hdrs = nil) ⇒ HTTP

Returns a new instance of HTTP.

Raises:

  • (ArgumentError)


66
67
68
69
70
71
72
73
74
# File 'lib/neko-http.rb', line 66

def initialize(url, hdrs = nil)
  @logger = Neko.logger
  @init_uri = URI(url)
  raise ArgumentError, 'Invalid URL' unless @init_uri.class <= URI::HTTP
  @http = Net::HTTP.new(init_uri.host, init_uri.port)
  http.use_ssl = init_uri.scheme == 'https'
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
  @headers = hdrs
end

Instance Attribute Details

#headersObject

Returns the value of attribute headers.



64
65
66
# File 'lib/neko-http.rb', line 64

def headers
  @headers
end

#httpObject (readonly)

Returns the value of attribute http.



63
64
65
# File 'lib/neko-http.rb', line 63

def http
  @http
end

#init_uriObject (readonly)

Returns the value of attribute init_uri.



63
64
65
# File 'lib/neko-http.rb', line 63

def init_uri
  @init_uri
end

#loggerObject

Returns the value of attribute logger.



64
65
66
# File 'lib/neko-http.rb', line 64

def logger
  @logger
end

Class Method Details

.get(url, params, hdrs = nil) ⇒ Object



28
29
30
31
32
33
# File 'lib/neko-http.rb', line 28

def self.get(url, params, hdrs = nil)
  h = HTTP.new(url, hdrs)
  data = h.get(params: params)
  h.close
  return data
end

.post_form(url, params, hdrs = nil) ⇒ Object



35
36
37
38
39
40
# File 'lib/neko-http.rb', line 35

def self.post_form(url, params, hdrs = nil)
  h = HTTP.new(url, hdrs)
  data = h.post(params: params)
  h.close
  return data
end

.post_json(url, obj, hdrs = {}) ⇒ Object

Send POST request with JSON body It will set the Content-Type to application/json.

Parameters:

  • url (String)

    full URL string

  • obj (Array, Hash, String)

    Array/Hash will be converted to JSON

  • hdrs (Array, Hash, String) (defaults to: {})

    Array/Hash will be converted to JSON



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/neko-http.rb', line 47

def self.post_json(url, obj, hdrs = {})
  hdrs['Content-Type'] = 'application/json'
  h = HTTP.new(url, hdrs)
  case obj
  when Array, Hash
    body = JSON.fast_generate(obj)
  when String
    body = obj
  else
    raise ArgumentError, 'Argument is neither Array, Hash, String'
  end
  data = h.post(body: body)
  h.close
  return data
end

Instance Method Details

#closeObject



96
97
98
# File 'lib/neko-http.rb', line 96

def close
  http.finish if http.started?
end

#delete(path: nil, params: nil, query: nil) ⇒ Object



92
93
94
# File 'lib/neko-http.rb', line 92

def delete(path: nil, params: nil, query: nil)
  return operate(__method__, path: path, params: params, query: query)
end

#get(path: nil, params: nil, query: nil) ⇒ Object



76
77
78
# File 'lib/neko-http.rb', line 76

def get(path: nil, params: nil, query: nil)
  return operate(__method__, path: path, params: params, query: query)
end

#patch(path: nil, params: nil, body: nil, query: nil) ⇒ Object



88
89
90
# File 'lib/neko-http.rb', line 88

def patch(path: nil, params: nil, body: nil, query: nil)
  return operate(__method__, path: path, params: params, body: body, query: query)
end

#post(path: nil, params: nil, body: nil, query: nil) ⇒ Object



80
81
82
# File 'lib/neko-http.rb', line 80

def post(path: nil, params: nil, body: nil, query: nil)
  return operate(__method__, path: path, params: params, body: body, query: query)
end

#put(path: nil, params: nil, body: nil, query: nil) ⇒ Object



84
85
86
# File 'lib/neko-http.rb', line 84

def put(path: nil, params: nil, body: nil, query: nil)
  return operate(__method__, path: path, params: params, body: body, query: query)
end