@@ -94,35 +94,34 @@ handle_info(send, #state{send_queue = SendQ,
94
94
Response = httpc :request (post , Request , HTTPOptions , Options ), % https://firebase.google.com/docs/cloud-messaging/http-server-ref
95
95
case Response of
96
96
{ok , {{_ , StatusCode5xx , _ }, _ , ErrorBody5xx }} when StatusCode5xx >= 500 , StatusCode5xx < 600 ->
97
- ? DEBUG (" recoverable FCM error: ~p , retrying..." , [ErrorBody5xx ]),
97
+ ? INFO_MSG (" recoverable error: ~p , retrying..." , [ErrorBody5xx ]),
98
98
NewRetryList = pending_to_retry (Head , RetryList ),
99
99
{NewRetryTimer , Timestamp } = restart_retry_timer (RetryTimer ),
100
100
State # state {retry_list = NewRetryList ,
101
101
send_queue = NewSendQ ,
102
102
retry_timer = NewRetryTimer ,
103
103
retry_timestamp = Timestamp };
104
+
104
105
{ok , {{_ , 200 , _ }, _ , ResponseBody }} ->
105
106
case parse_response (ResponseBody ) of
106
107
ok -> ok ;
107
- _ -> mod_pushoff_mnesia :unregister_client (DisableArgs )
108
+ E ->
109
+ ? ERROR_MSG (" error: ~p , deleting registration" , [E ]),
110
+ mod_pushoff_mnesia :unregister_client (DisableArgs )
108
111
end ,
109
112
Timestamp = erlang :timestamp (),
110
113
State # state {send_queue = NewSendQ ,
111
- pending_timestamp = Timestamp
112
- };
114
+ pending_timestamp = Timestamp };
113
115
114
116
{ok , {{_ , _ , _ }, _ , ResponseBody }} ->
115
-
116
- ? DEBUG (" non-recoverable FCM error: ~p , delete registration" , [ResponseBody ]),
117
- NewRetryList = pending_to_retry (Head , RetryList ),
118
- {NewRetryTimer , Timestamp } = restart_retry_timer (RetryTimer ),
119
- State # state {retry_list = NewRetryList ,
120
- send_queue = NewSendQ ,
121
- retry_timer = NewRetryTimer ,
122
- retry_timestamp = Timestamp };
117
+ ? ERROR_MSG (" error: ~p , deleting registration" , [ResponseBody ]),
118
+ mod_pushoff_mnesia :unregister_client (DisableArgs ),
119
+ Timestamp = erlang :timestamp (),
120
+ State # state {send_queue = NewSendQ ,
121
+ pending_timestamp = Timestamp };
123
122
124
123
{error , Reason } ->
125
- ? ERROR_MSG (" FCM request failed: ~p , retrying..." , [Reason ]),
124
+ ? ERROR_MSG (" request failed: ~p , retrying..." , [Reason ]),
126
125
NewRetryList = pending_to_retry (Head , RetryList ),
127
126
{NewRetryTimer , Timestamp } = restart_retry_timer (RetryTimer ),
128
127
State # state {retry_list = NewRetryList ,
@@ -183,19 +182,12 @@ pending_element_to_json(_) ->
183
182
unknown .
184
183
185
184
parse_response (ResponseBody ) ->
186
- {JsonData } = jiffy :decode (ResponseBody ),
187
- case proplists :get_value (<<" success" >>, JsonData ) of
188
- 1 ->
189
- ok ;
190
- 0 ->
191
- [{Result }] = proplists :get_value (<<" results" >>, JsonData ),
192
- case proplists :get_value (<<" error" >>, Result ) of
193
- <<" NotRegistered" >> ->
194
- ? ERROR_MSG (" FCM error: NotRegistered, unregistered user" , []),
195
- not_registered ;
196
- <<" InvalidRegistration" >> ->
197
- ? ERROR_MSG (" FCM error: InvalidRegistration, unregistered user" , []),
198
- invalid_registration ;
199
- _ -> other
200
- end
201
- end .
185
+ try jiffy :decode (ResponseBody ) of
186
+ {JsonData } ->
187
+ case proplists :get_value (<<" success" >>, JsonData ) of
188
+ 1 -> ok ;
189
+ 0 -> [{Result }] = proplists :get_value (<<" results" >>, JsonData ),
190
+ {error , proplists :get_value (<<" error" >>, Result )}
191
+ end ;
192
+ Bad -> {error , Bad }
193
+ catch throw :E -> E end .
0 commit comments