Sha256: bfe9acdcc38130dcefe18d56c7b59dc5468a9a77e5296f4bed162bd1565e14c0
Contents?: true
Size: 1.18 KB
Versions: 2
Compression:
Stored size: 1.18 KB
Contents
require 'net/http' require 'json' module Kernel # Patch to add the `get` method. Create tests and assertions within. def get url, &block uri = URI.parse url get = Net::HTTP::Get.new(uri) req = Net::HTTPHeader.build_headers get resp = Net::HTTP.start(uri.host, uri.port) { |http| http.request(req) } json = net_parse resp ApiPi::Dsl.new(json).parse(url, block) end # Used to set headers for GET requests. def set_header key, value ApiPi::HEADER.merge!( { key => value } ) end private # Groups all of the response parsing def net_parse response body = { body: JSON.load(response.body) } header = { header: response.to_dhash } code = { code: response.code } body.merge!(header).merge!(code) end end module Net::HTTPHeader # Adds request headers from ApiPi::HEADER def self.build_headers http_request ApiPi::HEADER.each do |k,v| http_request.add_field k, v end http_request end # Rebuild headers without dashes, which break JSON mapping. def to_dhash head = {} self.each_header do |k,v| new_hash = Hash[k.gsub('-',''), v] head.merge!(new_hash) end head end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
api_pi-0.2.3 | lib/api_pi/request.rb |
api_pi-0.2.2 | lib/api_pi/request.rb |