class Zaikio::Client::Helpers::JSONParser

Public Instance Methods

connection_error(env) click to toggle source
# File lib/zaikio/client/helpers/json_parser.rb, line 15
def connection_error(env)
  raise Spyke::ConnectionError.new(
    "Status: #{env.status}, URL: #{env.url}, body: #{env.body}",
    status: env.status,
    url: env.url,
    body: env.body
  )
end
on_complete(env) click to toggle source
# File lib/zaikio/client/helpers/json_parser.rb, line 6
def on_complete(env)
  case env.status
  when 404 then raise Spyke::ResourceNotFound.new(nil, url: env.url)
  when 429 then raise Zaikio::RateLimitedError.new(nil, url: env.url)
  when (200..299), 422 then env.body = parse_body(env.body)
  else connection_error(env)
  end
end
parse_body(body) click to toggle source
# File lib/zaikio/client/helpers/json_parser.rb, line 24
def parse_body(body)
  json = MultiJson.load(body, symbolize_keys: true)
  {
    data: json,
    metadata: {},
    errors: json.is_a?(Hash) ? json[:errors] : {}
  }
rescue MultiJson::ParseError
  {
    data: {},
    metadata: {},
    errors: {}
  }
end