Class: Rmega::APIResponse

Inherits:
Object
  • Object
show all
Defined in:
lib/rmega/api_response.rb

Constant Summary collapse

ERRORS =

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

{
  -1  => 'An internal error has occurred. Please submit a bug report, detailing the exact circumstances in which this error occurred.',
  -2  => 'You have passed invalid arguments to this command.',
  -3  => 'A temporary congestion or server malfunction prevented your request from being processed. No data was altered. Retry. Retries must be spaced with exponential backoff.',
  -4  => 'You have exceeded your command weight per time quota. Please wait a few seconds, then try again (this should never happen in sane real-life applications).',
  -5  => 'The upload failed. Please restart it from scratch.',
  -6  => 'Too many concurrent IP addresses are accessing this upload target URL.',
  -7  => 'The upload file packet is out of range or not starting and ending on a chunk boundary.',
  -8  => 'The upload target URL you are trying to access has expired. Please request a fresh one.',
  -9  => 'Object (typically, node or user) not found',
  -10 => 'Circular linkage attempted',
  -11 => 'Access violation (e.g., trying to write to a read-only share)',
  -12 => 'Trying to create an object that already exists',
  -13 => 'Trying to access an incomplete resource',
  -14 => 'A decryption operation failed (never returned by the API)',
  -15 => 'Invalid or expired user session, please relogin',
  -16 => 'User blocked',
  -17 => 'Request over quota',
  -18 => 'Resource temporarily not available, please try again later',
  -19 => 'Too many connections on this resource',
  -20 => 'Write failed',
  -21 => 'Read failed',
  -22 => 'Invalid application key; request not processed',
  -23 => 'SSL verification failed',
  -24 => 'Not enough quota',
  -26 => '2FA required',
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(http_response) ⇒ APIResponse

Returns a new instance of APIResponse.



34
35
36
37
# 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

Instance Attribute Details

#bodyObject (readonly)

Returns the value of attribute body.



3
4
5
# File 'lib/rmega/api_response.rb', line 3

def body
  @body
end

#codeObject (readonly)

Returns the value of attribute code.



3
4
5
# File 'lib/rmega/api_response.rb', line 3

def code
  @code
end

Instance Method Details

#as_errorObject



47
48
49
50
51
52
53
54
55
# 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_jsonObject



57
58
59
# File 'lib/rmega/api_response.rb', line 57

def as_json
  @as_body ||= JSON.parse(body).first
end

#error?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/rmega/api_response.rb', line 39

def error?
  unknown_error? or known_error? or temporary_error?
end

#ok?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/rmega/api_response.rb', line 43

def ok?
  !error?
end