@@ -15,7 +15,6 @@ def initialize(app)
1515 # Handles pretty much all the api response parsing and error handling. All responses that
1616 # indicate a failure will raise a SparkApi::ClientError exception
1717 def on_complete ( env )
18-
1918 env [ :body ] = decompress_body ( env )
2019
2120 body = MultiJson . decode ( env [ :body ] )
@@ -25,6 +24,7 @@ def on_complete(env)
2524 end
2625 response = ApiResponse . new body
2726 paging = response . pagination
27+
2828 if paging . nil?
2929 results = response
3030 else
@@ -35,34 +35,40 @@ def on_complete(env)
3535 results = paginate_response ( response , paging )
3636 end
3737 end
38+
39+ error_hash = {
40+ :request_path => env [ :url ] ,
41+ :message => response . message ,
42+ :code => response . code ,
43+ :status => env [ :status ]
44+ }
45+
3846 case env [ :status ]
3947 when 400
40- hash = { :message => response . message , :code => response . code , :status => env [ :status ] }
41-
4248 # constraint violation
4349 if response . code == 1053
4450 details = body [ 'D' ] [ 'Details' ]
45- hash [ :details ] = details
51+ error_hash [ :details ] = details
4652 end
47- raise BadResourceRequest , hash
53+ raise BadResourceRequest , error_hash
4854 when 401
4955 # Handle the WWW-Authenticate Response Header Field if present. This can be returned by
5056 # OAuth2 implementations and wouldn't hurt to log.
5157 auth_header_error = env [ :request_headers ] [ "WWW-Authenticate" ]
5258 SparkApi . logger . warn ( "Authentication error #{ auth_header_error } " ) unless auth_header_error . nil?
53- raise PermissionDenied , { :message => response . message , :code => response . code , :status => env [ :status ] }
59+ raise PermissionDenied , error_hash
5460 when 404
55- raise NotFound , { :message => response . message , :code => response . code , :status => env [ :status ] }
61+ raise NotFound , error_hash
5662 when 405
57- raise NotAllowed , { :message => response . message , :code => response . code , :status => env [ :status ] }
63+ raise NotAllowed , error_hash
5864 when 409
59- raise BadResourceRequest , { :message => response . message , :code => response . code , :status => env [ :status ] }
65+ raise BadResourceRequest , error_hash
6066 when 500
61- raise ClientError , { :message => response . message , :code => response . code , :status => env [ :status ] }
67+ raise ClientError , error_hash
6268 when 200 ..299
6369 SparkApi . logger . debug { "Success!" }
6470 else
65- raise ClientError , { :message => response . message , :code => response . code , :status => env [ :status ] }
71+ raise ClientError , error_hash
6672 end
6773 env [ :body ] = results
6874 end
0 commit comments