-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathapi_error.mustache
63 lines (54 loc) · 1.42 KB
/
api_error.mustache
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
=begin
{{> api_info}}
=end
{{#useCustomTemplateCode}}
module Dropbox
end
{{/useCustomTemplateCode}}
module {{moduleName}}
class ApiError < StandardError
{{^useCustomTemplateCode}}
attr_reader :code, :response_headers, :response_body
{{/useCustomTemplateCode}}
{{#useCustomTemplateCode}}
attr_reader :code, :response_headers
# @return [ErrorResponse]
attr_accessor :response_body
{{/useCustomTemplateCode}}
# Usage examples:
# ApiError.new
# ApiError.new("message")
# ApiError.new(:code => 500, :response_headers => {}, :response_body => "")
# ApiError.new(:code => 404, :message => "Not Found")
def initialize(arg = nil)
if arg.is_a? Hash
if arg.key?(:message) || arg.key?('message')
super(arg[:message] || arg['message'])
else
super arg
end
arg.each do |k, v|
instance_variable_set "@#{k}", v
end
else
super arg
@message = arg
end
end
# Override to_s to display a friendly error message
def to_s
message
end
def message
if @message.nil?
msg = "Error message: the server returns an error"
else
msg = @message
end
msg += "\nHTTP status code: #{code}" if code
msg += "\nResponse headers: #{response_headers}" if response_headers
msg += "\nResponse body: #{response_body}" if response_body
msg
end
end
end