@@ -123,6 +123,26 @@ namespace SleepyDiscord {
123
123
default : response.statusCode = BAD_REQUEST; break ; // unexpected method
124
124
}
125
125
126
+ // rate limit check
127
+ if (response.header [" X-RateLimit-Remaining" ] == " 0" && response.statusCode != TOO_MANY_REQUESTS) {
128
+ std::tm date = {};
129
+ // for some reason std::get_time requires gcc 5
130
+ std::istringstream dateStream (response.header [" Date" ]);
131
+ dateStream >> std::get_time (&date, " %a, %d %b %Y %H:%M:%S GMT" );
132
+ const time_t reset = std::stoi (response.header [" X-RateLimit-Reset" ]);
133
+ const std::string& xBucket = response.header [" X-RateLimit-Bucket" ];
134
+ #if defined(_WIN32) || defined(_WIN64)
135
+ std::tm gmTM;
136
+ std::tm *const resetGM = &gmTM;
137
+ gmtime_s (resetGM, &reset);
138
+ #else
139
+ std::tm * resetGM = std::gmtime (&reset);
140
+ #endif
141
+ const time_t resetDelta = (std::mktime (resetGM) - std::mktime (&date)) * 1000 ;
142
+ rateLimiter.limitBucket (bucket, xBucket, resetDelta + getEpochTimeMillisecond ());
143
+ onDepletedRequestSupply (bucket, resetDelta);
144
+ }
145
+
126
146
// status checking
127
147
switch (response.statusCode ) {
128
148
case OK: case CREATED: case NO_CONTENT: case NOT_MODIFIED: break ;
@@ -170,26 +190,6 @@ namespace SleepyDiscord {
170
190
} break ;
171
191
}
172
192
173
- // rate limit check
174
- if (response.header [" X-RateLimit-Remaining" ] == " 0" && response.statusCode != TOO_MANY_REQUESTS) {
175
- std::tm date = {};
176
- // for some reason std::get_time requires gcc 5
177
- std::istringstream dateStream (response.header [" Date" ]);
178
- dateStream >> std::get_time (&date, " %a, %d %b %Y %H:%M:%S GMT" );
179
- const time_t reset = std::stoi (response.header [" X-RateLimit-Reset" ]);
180
- const std::string& xBucket = response.header [" X-RateLimit-Bucket" ];
181
- #if defined(_WIN32) || defined(_WIN64)
182
- std::tm gmTM;
183
- std::tm *const resetGM = &gmTM;
184
- gmtime_s (resetGM, &reset);
185
- #else
186
- std::tm * resetGM = std::gmtime (&reset);
187
- #endif
188
- const time_t resetDelta = (std::mktime (resetGM) - std::mktime (&date)) * 1000 ;
189
- rateLimiter.limitBucket (bucket, xBucket, resetDelta + getEpochTimeMillisecond ());
190
- onDepletedRequestSupply (bucket, resetDelta);
191
- }
192
-
193
193
handleCallbackCall ();
194
194
}
195
195
onResponse (response);
0 commit comments