Class: Hknife::Request
- Inherits:
-
Object
- Object
- Hknife::Request
- Defined in:
- lib/hknife.rb
Constant Summary collapse
- @@objects =
{}
Instance Method Summary collapse
- #async(&block) ⇒ Object
- #delete(uri) ⇒ Object
- #get(uri) ⇒ Object
- #header(hsh) ⇒ Object
-
#initialize ⇒ Request
constructor
A new instance of Request.
- #post_form(uri, data) ⇒ Object
- #put(uri, data) ⇒ Object
- #request ⇒ Object
- #response ⇒ Object
- #wait ⇒ Object
Constructor Details
#initialize ⇒ Request
Returns a new instance of Request.
12 13 14 15 16 17 18 |
# File 'lib/hknife.rb', line 12 def initialize @headers = {} @response = nil @requestor = nil @request = nil @http_client = nil end |
Instance Method Details
#async(&block) ⇒ Object
93 94 95 96 97 98 |
# File 'lib/hknife.rb', line 93 def async(&block) @async_thread = Thread.new do @response = @requestor.call(@request) block.call @response if block_given? end end |
#delete(uri) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/hknife.rb', line 36 def delete(uri) uriObj = URI.parse(uri) @http_client = Net::HTTP.new(uriObj.host, uriObj.port) @http_client.use_ssl = uriObj.scheme == 'https' @request = Net::HTTP::Delete.new(uriObj.path) @requestor = lambda do |request| res = @http_client.request(request) case res['Content-Type'] when /application\/json/ then res.body = JSON.parse(res.body) end res end self end |
#get(uri) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/hknife.rb', line 20 def get(uri) uriObj = URI.parse(uri) @http_client = Net::HTTP.new(uriObj.host, uriObj.port) @http_client.use_ssl = uriObj.scheme == 'https' @request = Net::HTTP::Get.new(uriObj.path) @requestor = lambda do |request| res = @http_client.request(request) case res['Content-Type'] when /application\/json/ then res.body = JSON.parse(res.body) end res end self end |
#header(hsh) ⇒ Object
85 86 87 88 89 90 91 |
# File 'lib/hknife.rb', line 85 def header(hsh) @headers = {} if @headers.nil? hsh.each do |key, val| @headers[key] = val end self end |
#post_form(uri, data) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/hknife.rb', line 68 def post_form(uri, data) uriObj = URI.parse(uri) @http_client = Net::HTTP.new(uriObj.host, uriObj.port) @http_client.use_ssl = uriObj.scheme == 'https' @request = Net::HTTP::Post.new(uriObj.path) @requestor = lambda do |request| res = @http_client.request(@request, URI.encode_www_form(data)) case res['Content-Type'] when /application\/json/ then res.body = JSON.parse(res.body) end res end self end |
#put(uri, data) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/hknife.rb', line 52 def put(uri, data) uriObj = URI.parse(uri) @http_client = Net::HTTP.new(uriObj.host, uriObj.port) @http_client.use_ssl = uriObj.scheme == 'https' @request = Net::HTTP::Put.new(uriObj.path) @requestor = lambda do |request| res = @http_client.request(request) case res['Content-Type'] when /application\/json/ then res.body = JSON.parse(res.body) end res end self end |
#request ⇒ Object
104 105 106 |
# File 'lib/hknife.rb', line 104 def request @request end |
#response ⇒ Object
108 109 110 111 112 |
# File 'lib/hknife.rb', line 108 def response @headers.each_pair {|k, v| @request.add_field(k, v)} @response = @requestor.call(@request) @response end |
#wait ⇒ Object
100 101 102 |
# File 'lib/hknife.rb', line 100 def wait @async_thread.join end |