52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/mandrill.rb', line 52
def cast_error(body)
error_map = {
'ValidationError' => ValidationError,
'Invalid_Key' => InvalidKeyError,
'PaymentRequired' => PaymentRequiredError,
'Unknown_Subaccount' => UnknownSubaccountError,
'Unknown_Template' => UnknownTemplateError,
'ServiceUnavailable' => ServiceUnavailableError,
'Unknown_Message' => UnknownMessageError,
'Invalid_Tag_Name' => InvalidTagNameError,
'Invalid_Reject' => InvalidRejectError,
'Unknown_Sender' => UnknownSenderError,
'Unknown_Url' => UnknownUrlError,
'Unknown_TrackingDomain' => UnknownTrackingDomainError,
'Invalid_Template' => InvalidTemplateError,
'Unknown_Webhook' => UnknownWebhookError,
'Unknown_InboundDomain' => UnknownInboundDomainError,
'Unknown_InboundRoute' => UnknownInboundRouteError,
'Unknown_Export' => UnknownExportError,
'IP_ProvisionLimit' => IPProvisionLimitError,
'Unknown_Pool' => UnknownPoolError,
'NoSendingHistory' => NoSendingHistoryError,
'PoorReputation' => PoorReputationError,
'Unknown_IP' => UnknownIPError,
'Invalid_EmptyDefaultPool' => InvalidEmptyDefaultPoolError,
'Invalid_DeleteDefaultPool' => InvalidDeleteDefaultPoolError,
'Invalid_DeleteNonEmptyPool' => InvalidDeleteNonEmptyPoolError,
'Invalid_CustomDNS' => InvalidCustomDNSError,
'Invalid_CustomDNSPending' => InvalidCustomDNSPendingError,
'Metadata_FieldLimit' => MetadataFieldLimitError,
'Unknown_MetadataField' => UnknownMetadataFieldError
}
begin
error_info = JSON.parse(body)
if error_info['status'] != 'error' or not error_info['name']
raise Error, "We received an unexpected error: #{body}"
end
if error_map[error_info['name']]
raise error_map[error_info['name']], error_info['message']
else
raise Error, error_info['message']
end
rescue JSON::ParserError
raise Error, "We received an unexpected error: #{body}"
end
end
|