class Rmega::APIResponse

Constants

ERRORS

Check out the error codes list at mega.nz/#doc (section 11)

Attributes

body[R]
code[R]

Public Class Methods

new(http_response) click to toggle source
# File lib/rmega/api_response.rb, line 34
def initialize(http_response)
  @code = http_response.code.to_i
  @body = http_response.body ? http_response.body : ""
end

Public Instance Methods

as_error() click to toggle source
# File lib/rmega/api_response.rb, line 47
def as_error
  if unknown_error?
    return TemporaryServerError.new
  elsif temporary_error?
    return TemporaryServerError.new(error_message)
  else
    return ServerError.new(error_message)
  end
end
as_json() click to toggle source
# File lib/rmega/api_response.rb, line 57
def as_json
  @as_body ||= JSON.parse(body).first
end
error?() click to toggle source
# File lib/rmega/api_response.rb, line 39
def error?
  unknown_error? or known_error? or temporary_error?
end
ok?() click to toggle source
# File lib/rmega/api_response.rb, line 43
def ok?
  !error?
end

Private Instance Methods

as_error_code() click to toggle source
# File lib/rmega/api_response.rb, line 63
def as_error_code
  @error_code ||= body.scan(/\A\[{0,1}(\-\d+)\]{0,1}\z/).flatten.first.to_i
end
error_message() click to toggle source
# File lib/rmega/api_response.rb, line 67
def error_message
  ERRORS[as_error_code]
end
known_error?() click to toggle source
# File lib/rmega/api_response.rb, line 79
def known_error?
  as_error_code < 0
end
temporary_error?() click to toggle source
# File lib/rmega/api_response.rb, line 71
def temporary_error?
  known_error? and [-3, -6, -18, -19].include?(as_error_code)
end
unknown_error?() click to toggle source
# File lib/rmega/api_response.rb, line 75
def unknown_error?
  code == 500 or body.empty?
end