Compare commits

..

2 commits

Author SHA1 Message Date
0189bcc0d0 Retry up to 5 times, when an error occurs. 2020-12-26 20:50:11 +01:00
8bd06434e3 Set User Agent 2020-12-26 20:50:11 +01:00
2 changed files with 7 additions and 2 deletions

1
http.c
View file

@ -22,6 +22,7 @@ char* request(char *url)
if(httpHandler) { if(httpHandler) {
curl_easy_setopt(httpHandler,CURLOPT_URL, url); curl_easy_setopt(httpHandler,CURLOPT_URL, url);
curl_easy_setopt(httpHandler,CURLOPT_WRITEFUNCTION, httpResponseCallback); curl_easy_setopt(httpHandler,CURLOPT_WRITEFUNCTION, httpResponseCallback);
curl_easy_setopt(httpHandler,CURLOPT_USERAGENT, "cWikiBot/0.1 (https://git.zom.bi/cpp/cWikiBot; cpp@zom.bi) libcurl4/7.64.0");
curl_easy_setopt(httpHandler,CURLOPT_WRITEDATA, (void *)&httpResponse); curl_easy_setopt(httpHandler,CURLOPT_WRITEDATA, (void *)&httpResponse);
return_code = curl_easy_perform(httpHandler); return_code = curl_easy_perform(httpHandler);
} }

View file

@ -12,15 +12,19 @@ json_object* query_lichess(char* username)
*/ */
char* api_base = "https://lichess.org/api/user/"; char* api_base = "https://lichess.org/api/user/";
char user_url[128]; char user_url[128];
int retries = 5;
strcpy(user_url,api_base); strcpy(user_url,api_base);
strcat(user_url,username); strcat(user_url,username);
printf("querying %s\n",user_url); printf("querying %s\n",user_url);
char* http_response = request(user_url); char* http_response = request(user_url);
if(http_response == NULL) while(http_response == NULL)
{ {
printf("didn't receive HTTP response, we might be rate-limited. Waiting 60s"); printf("didn't receive HTTP response, we might be rate-limited. Waiting 60s");
sleep(60); sleep(60);
return NULL; http_response = request(user_url);
retries--;
if(retries == 0)
return NULL;
} }
json_object *lichessUser = json_tokener_parse(http_response); json_object *lichessUser = json_tokener_parse(http_response);
json_object *profile = json_object_object_get(lichessUser,"profile"); json_object *profile = json_object_object_get(lichessUser,"profile");