@@ -50,17 +50,23 @@ export default Ember.Mixin.create({
50
50
let msg = 'The Service responded with a ' + resp . status + ' error.' ;
51
51
reject ( new ServerError ( msg , resp ) ) ;
52
52
} else if ( resp . status >= 400 ) {
53
- resp . json ( ) . then ( function ( _resp ) {
54
- let msg = 'The API responded with a ' + resp . status + ' error.' ;
55
- reject ( new ClientError ( msg , _resp ) ) ;
53
+ resp . text ( ) . then ( function ( _resp ) {
54
+ let json , msg = 'The API responded with a ' + resp . status + ' error.' ;
55
+ try {
56
+ json = JSON . parse ( _resp ) ;
57
+ } catch ( e ) {
58
+ Ember . Logger . error ( e ) ;
59
+ json = { "errors" : [ { "status" : resp . status } ] } ;
60
+ }
61
+ reject ( new ClientError ( msg , json ) ) ;
56
62
} ) ;
57
63
} else if ( resp . status === 204 ) {
58
64
resolve ( '' ) ;
59
65
} else {
60
66
return resp . json ( ) . then ( function ( json ) {
61
67
if ( isUpdate ) {
62
- _this . cacheUpdate ( { meta : json . meta , data : json . data , headers : resp . headers } ) ;
63
68
json . data = _this . serializer . transformAttributes ( json . data ) ;
69
+ _this . cacheUpdate ( { meta : json . meta , data : json . data , headers : resp . headers } ) ;
64
70
resolve ( json . data ) ;
65
71
} else {
66
72
let resource = _this . serializer . deserialize ( json ) ;
@@ -99,8 +105,8 @@ export default Ember.Mixin.create({
99
105
} else {
100
106
let headers = _this . _getAjaxHeaders ( jqXHR ) ;
101
107
if ( isUpdate ) {
102
- _this . cacheUpdate ( { meta : json . meta , data : json . data , headers : headers } ) ;
103
108
json . data = _this . serializer . transformAttributes ( json . data ) ;
109
+ _this . cacheUpdate ( { meta : json . meta , data : json . data , headers : headers } ) ;
104
110
resolve ( json . data ) ;
105
111
} else {
106
112
let resource = _this . serializer . deserialize ( json ) ;
@@ -116,7 +122,11 @@ export default Ember.Mixin.create({
116
122
reject ( new ServerError ( msg , jqXHR . responseJSON || jqXHR . responseText ) ) ;
117
123
} else if ( jqXHR . status >= 400 ) {
118
124
msg = 'The API responded with a ' + jqXHR . status + ' error.' ;
119
- reject ( new ClientError ( msg , jqXHR . responseJSON || jqXHR . responseText ) ) ;
125
+ let json = jqXHR . responseJSON ;
126
+ if ( ! json ) {
127
+ json = { "errors" : [ { "status" : jqXHR . status , "detail" : jqXHR . responseText } ] } ;
128
+ }
129
+ reject ( new ClientError ( msg , json ) ) ;
120
130
} else {
121
131
msg = ( errorThrown ) ? errorThrown : 'Unable to Fetch resource(s)' ;
122
132
reject ( new FetchError ( msg , {
0 commit comments