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