@@ -64,17 +64,19 @@ function getContributionGraphs(string $user): array
64
64
$ response = [];
65
65
foreach ($ requests as $ year => $ request ) {
66
66
$ contents = curl_multi_getcontent ($ request );
67
- $ decoded = json_decode ($ contents );
67
+ $ decoded = is_string ( $ contents ) ? json_decode ($ contents ) : null ;
68
68
// if response is empty or invalid, retry request one time
69
- if (empty ($ decoded )) {
69
+ if (empty ($ decoded ) || empty ( $ decoded -> data ) ) {
70
70
$ query = buildContributionGraphQuery ($ user , $ year );
71
71
$ request = getGraphQLCurlHandle ($ query );
72
72
$ contents = curl_exec ($ request );
73
- if ($ contents === false ) {
74
- error_log ("Failed to decode response for $ user's $ year contributions after 2 attempts. " );
73
+ $ decoded = is_string ($ contents ) ? json_decode ($ contents ) : null ;
74
+ // if the response is still empty or invalid, log an error and skip the year
75
+ if (empty ($ decoded ) || empty ($ decoded ->data )) {
76
+ $ message = $ decoded ->errors [0 ]->message ?? ($ decoded ->message ?? "An API error occurred. " );
77
+ error_log ("Failed to decode response for $ user's $ year contributions after 2 attempts. $ message " );
75
78
continue ;
76
79
}
77
- $ decoded = json_decode ($ contents );
78
80
}
79
81
array_unshift ($ response , $ decoded );
80
82
}
@@ -198,7 +200,7 @@ function getContributionYears(string $user): array
198
200
}
199
201
$ message = $ response ->errors [0 ]->message ?? "An API error occurred. " ;
200
202
// Other errors that contain a message field
201
- throw new InvalidArgumentException ($ message , 500 );
203
+ throw new InvalidArgumentException ($ message , 502 );
202
204
}
203
205
// API did not return data
204
206
if (!isset ($ response ->data ) && isset ($ response ->message )) {
@@ -223,9 +225,6 @@ function getContributionDates(array $contributionGraphs): array
223
225
// sort contribution calendars by year key
224
226
ksort ($ contributionGraphs );
225
227
foreach ($ contributionGraphs as $ graph ) {
226
- if (!empty ($ graph ->errors )) {
227
- throw new AssertionError ($ graph ->data ->errors [0 ]->message , 502 );
228
- }
229
228
$ weeks = $ graph ->data ->user ->contributionsCollection ->contributionCalendar ->weeks ;
230
229
foreach ($ weeks as $ week ) {
231
230
foreach ($ week ->contributionDays as $ day ) {
0 commit comments