@@ -63,30 +63,41 @@ def error_message(self):
6363 # }
6464 # }
6565 #
66+ #
67+ # Rate limiting example:
68+ # {
69+ # u'request_time': 1467306906,
70+ # u'error': u'You have hit the API limit for measurements
71+ # [measure:raw_rate]. Contact: support@librato.com to adjust this limit.'
72+ # }
6673 def _parse_error_message (self ):
6774 if isinstance (self .error_payload , str ):
6875 # Payload is just a string
6976 return self .error_payload
7077 elif isinstance (self .error_payload , dict ):
71- payload = self .error_payload ['errors' ]
72- messages = []
73- for key in payload :
74- error_list = payload [key ]
75- if isinstance (error_list , str ):
76- # The error message is a scalar string, just tack it on
77- msg = "%s: %s" % (key , error_list )
78- messages .append (msg )
79- elif isinstance (error_list , list ):
80- for error_message in error_list :
81- msg = "%s: %s" % (key , error_message )
82- messages .append (msg )
83- elif isinstance (error_list , dict ):
84- for k in error_list :
85- # e.g. "params: measure_time: "
86- msg = "%s: %s: " % (key , k )
87- msg += self ._flatten_error_message (error_list [k ])
78+ # The API could return 'errors' or just 'error' with a flat message
79+ if 'error' in self .error_payload :
80+ return self .error_payload ['error' ]
81+ else :
82+ payload = self .error_payload ['errors' ]
83+ messages = []
84+ for key in payload :
85+ error_list = payload [key ]
86+ if isinstance (error_list , str ):
87+ # The error message is a scalar string, just tack it on
88+ msg = "%s: %s" % (key , error_list )
8889 messages .append (msg )
89- return ", " .join (messages )
90+ elif isinstance (error_list , list ):
91+ for error_message in error_list :
92+ msg = "%s: %s" % (key , error_message )
93+ messages .append (msg )
94+ elif isinstance (error_list , dict ):
95+ for k in error_list :
96+ # e.g. "params: measure_time: "
97+ msg = "%s: %s: " % (key , k )
98+ msg += self ._flatten_error_message (error_list [k ])
99+ messages .append (msg )
100+ return ", " .join (messages )
90101
91102 def _flatten_error_message (self , error_msg ):
92103 if isinstance (error_msg , str ):
0 commit comments