class Etsy::Response

Response

Basic wrapper around the Etsy JSON response data

Public Class Methods

new(raw_response) click to toggle source

Create a new response based on the raw HTTP response

# File lib/etsy/response.rb, line 25
def initialize(raw_response)
  @raw_response = raw_response
end

Public Instance Methods

body() click to toggle source
# File lib/etsy/response.rb, line 35
def body
  @raw_response.body
end
code() click to toggle source
# File lib/etsy/response.rb, line 39
def code
  @raw_response.code
end
count() click to toggle source

Number of records in the response results

# File lib/etsy/response.rb, line 44
def count
  if paginated?
    to_hash['results'].nil? ? 0 : to_hash['results'].size
  else
    to_hash['count']
  end
end
paginated?() click to toggle source
# File lib/etsy/response.rb, line 71
def paginated?
  !!to_hash['pagination']
end
result() click to toggle source

Results of the API request

# File lib/etsy/response.rb, line 53
def result
  if success?
    results = to_hash['results'] || []
    count == 1 ? results.first : results
  else
    Etsy.silent_errors ? [] : validate!
  end
end
success?() click to toggle source
# File lib/etsy/response.rb, line 67
def success?
  !!(code =~ /2\d\d/)
end
to_hash() click to toggle source

Convert the raw JSON data to a hash

# File lib/etsy/response.rb, line 30
def to_hash
  validate!
  @hash ||= json
end
total() click to toggle source

Total number of results of the request

# File lib/etsy/response.rb, line 63
def total
  @total ||= to_hash['count']
end

Private Instance Methods

data() click to toggle source
# File lib/etsy/response.rb, line 77
def data
  @raw_response.body
end
exceeded_rate_limit?() click to toggle source
# File lib/etsy/response.rb, line 123
def exceeded_rate_limit?
  data =~ /You have exceeded/
end
invalid_user_id?() click to toggle source
# File lib/etsy/response.rb, line 111
def invalid_user_id?
  data =~ /is not a valid user_id/
end
json() click to toggle source
# File lib/etsy/response.rb, line 81
def json
  @hash ||= JSON.parse(data)
end
missing_shop_id?() click to toggle source
# File lib/etsy/response.rb, line 107
def missing_shop_id?
  data =~ /Shop with PK shop_id/
end
resource_unavailable?() click to toggle source
# File lib/etsy/response.rb, line 119
def resource_unavailable?
  data =~ /Resource temporarily unavailable/
end
temporary_etsy_issue?() click to toggle source
# File lib/etsy/response.rb, line 115
def temporary_etsy_issue?
  data =~ /Temporary Etsy issue/
end
token_revoked?() click to toggle source
# File lib/etsy/response.rb, line 103
def token_revoked?
  data == "oauth_problem=token_revoked"
end
valid_json?() click to toggle source
# File lib/etsy/response.rb, line 96
def valid_json?
  json
  return true
rescue JSON::ParserError
  return false
end
validate!() click to toggle source
# File lib/etsy/response.rb, line 85
def validate!
  raise OAuthTokenRevoked         if token_revoked?
  raise MissingShopID             if missing_shop_id?
  raise InvalidUserID             if invalid_user_id?
  raise TemporaryIssue            if temporary_etsy_issue?
  raise ResourceUnavailable       if resource_unavailable?
  raise ExceededRateLimit         if exceeded_rate_limit?
  raise EtsyJSONInvalid.new({:code => code, :data => data}) unless valid_json?
  true
end