module Adafruit::IO::RequestHandler
Attributes
last_response[R]
pagination[R]
Public Instance Methods
delete(url, options = {})
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 34 def delete(url, options = {}) request :handle_delete, url end
get(url, options = {})
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 22 def get(url, options = {}) request(:handle_get, url, options) end
last_page?()
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 38 def last_page? pagination.nil? || (pagination['limit'] != pagination['count']) end
post(url, data, options = {})
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 26 def post(url, data, options = {}) request :handle_post, url, data, options end
put(url, data, options = {})
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 30 def put(url, data, options = {}) request :handle_put, url, data, options end
request(method, url, data = nil, options = nil)
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 18 def request(method, url, data = nil, options = nil) @last_response = send(method, url, data) end
Private Instance Methods
handle_delete(url, options = {})
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 114 def handle_delete(url, options = {}) response = conn.delete do |req| req.url URI::encode(url) end if response.status < 200 || response.status > 299 if response.status === 404 nil else raise Adafruit::IO::RequestError.new("DELETE error: #{ response.body }", response) end else parsed_response response end end
handle_get(url, options = {})
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 71 def handle_get(url, options = {}) response = conn.get do |req| req.url URI::encode(url) options.each do |k,v| req.params[k] = v end end update_pagination(response) if response.status < 200 || response.status > 299 raise Adafruit::IO::RequestError.new("GET error: #{ response.body }", response) else parsed_response response end end
handle_post(url, data, options = {})
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 88 def handle_post(url, data, options = {}) response = conn.post do |req| req.url URI::encode(url) req.body = data end if response.status < 200 || response.status > 299 raise Adafruit::IO::RequestError.new("POST error: #{ response.body }", response) else parsed_response response end end
handle_put(url, data, options = {})
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 101 def handle_put(url, data, options = {}) response = conn.put do |req| req.url URI::encode(url) req.body = data end if response.status < 200 || response.status > 299 raise Adafruit::IO::RequestError.new("PUT error: #{ response.body }", response) else parsed_response response end end
parsed_response(response)
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 55 def parsed_response(response) if response.respond_to?(:data) response.data else begin json = JSON.parse(response.body) rescue => ex if @debug puts "ERROR PARSING JSON: #{ex.message}" puts ex.backtrace[0..5].join("\n") end response.body end end end
update_pagination(response)
click to toggle source
# File lib/adafruit/io/request_handler.rb, line 44 def update_pagination(response) @pagination = nil if pagination_keys = response.headers.keys.grep(/x-pagination-/i) @pagination = {} pagination_keys.each do |k| @pagination[k.gsub(/x-pagination-/i, '')] = response.headers[k] end end end