@@ -60,6 +60,29 @@ function getContributionGraphs(string $user): array
60
60
return $ response ;
61
61
}
62
62
63
+ /**
64
+ * Get all tokens from environment variables (TOKEN, TOKEN2, TOKEN3, etc.) if they are set
65
+ *
66
+ * @return array<string> List of tokens
67
+ */
68
+ function getGitHubTokens () {
69
+ // result is already calculated
70
+ if (isset ($ GLOBALS ["ALL_TOKENS " ])) {
71
+ return $ GLOBALS ["ALL_TOKENS " ];
72
+ }
73
+ // find all tokens in environment variables
74
+ $ tokens = array ($ _SERVER ["TOKEN " ] ?? "" );
75
+ for ($ i = 2 ; $ i < 4 ; $ i ++) {
76
+ if (isset ($ _SERVER ["TOKEN $ i " ])) {
77
+ // add token to list
78
+ $ tokens [] = $ _SERVER ["TOKEN $ i " ];
79
+ }
80
+ }
81
+ // store for future use
82
+ $ GLOBALS ["ALL_TOKENS " ] = $ tokens ;
83
+ return $ tokens ;
84
+ }
85
+
63
86
/** Create a CurlHandle for a POST request to GitHub's GraphQL API
64
87
*
65
88
* @param string $query GraphQL query
@@ -68,7 +91,8 @@ function getContributionGraphs(string $user): array
68
91
*/
69
92
function getGraphQLCurlHandle (string $ query )
70
93
{
71
- $ token = $ _SERVER ["TOKEN " ];
94
+ $ all_tokens = getGitHubTokens ();
95
+ $ token = $ all_tokens [array_rand ($ all_tokens )];
72
96
$ headers = array (
73
97
"Authorization: bearer $ token " ,
74
98
"Content-Type: application/json " ,
@@ -147,7 +171,7 @@ function getContributionYears(string $user): array
147
171
// API Error
148
172
if (!empty ($ response ->errors )) {
149
173
// Other errors that contain a message field
150
- throw new InvalidArgumentException ($ response ->data -> errors [0 ]->message );
174
+ throw new InvalidArgumentException ($ response ->errors [0 ]->message );
151
175
}
152
176
// API did not return data
153
177
if (!isset ($ response ->data ) && isset ($ response ->message )) {
0 commit comments