bind timestamp with enc

This commit is contained in:
2024-09-09 14:03:15 +08:00
parent 7bc3939581
commit 3f064f651c

45
main.c
View File

@@ -32,10 +32,16 @@ struct memory
size_t size; size_t size;
}; };
struct enc
{
char *enc;
long long timestamp;
};
CURLcode curl_get(const char *, struct memory *); CURLcode curl_get(const char *, struct memory *);
long long current_timestamp(); long long current_timestamp();
size_t cb(char *, size_t, size_t, void *); size_t cb(char *, size_t, size_t, void *);
char *get_enc(); struct enc get_enc();
void parise(void *); void parise(void *);
void exit_handler(); void exit_handler();
@@ -135,26 +141,29 @@ size_t cb(char *data, size_t size, size_t nmemb, void *clientp)
return realsize; return realsize;
} }
char *get_enc() struct enc get_enc()
{ {
char url[200]; char url[200];
char *ret = NULL; struct enc ret = {0};
struct memory data = {0}; struct memory data = {0};
const cJSON *enc = NULL; const cJSON *json = NULL;
cJSON *data_json = NULL;
REGEN_ENC_URL_F(url, current_timestamp()); ret.timestamp = current_timestamp();
REGEN_ENC_URL_F(url, ret.timestamp);
if (curl_get(url, &data) != CURLE_OK) if (curl_get(url, &data) != CURLE_OK)
return NULL; return ret;
DPRINT("%s\n", data.response); DPRINT("%s\n", data.response);
cJSON *data_json = cJSON_Parse(data.response); data_json = cJSON_Parse(data.response);
enc = cJSON_GetObjectItemCaseSensitive(data_json, "enc"); json = cJSON_GetObjectItemCaseSensitive(data_json, "enc");
const size_t s = strlen(enc->valuestring); const size_t s = strlen(json->valuestring);
ret = malloc(s + 1); ret.enc = malloc(s + 1);
memcpy(ret, enc->valuestring, s + 1); memcpy(ret.enc, json->valuestring, s + 1);
free(data.response); free(data.response);
cJSON_Delete(data_json); cJSON_Delete(data_json);
@@ -170,17 +179,17 @@ void parise(void *arg)
{ {
char url[200]; char url[200];
struct memory json_c = {0}; struct memory json_c = {0};
const char *enc = NULL; struct enc enc;
const cJSON *result = NULL; const cJSON *result = NULL;
const cJSON *msg = NULL; const cJSON *msg = NULL;
const cJSON *data = NULL; const cJSON *data = NULL;
const cJSON *errorMsg = NULL; const cJSON *errorMsg = NULL;
cJSON *json = NULL; cJSON *json = NULL;
if ((enc = get_enc()) == NULL) if ((enc = get_enc()).enc == NULL)
continue; continue;
REGEN_URL_F(url, enc, current_timestamp()); REGEN_URL_F(url, enc.enc, enc.timestamp);
curl_get(url, &json_c); curl_get(url, &json_c);
json = cJSON_Parse(json_c.response); json = cJSON_Parse(json_c.response);
@@ -192,15 +201,15 @@ void parise(void *arg)
if (result->valueint == 1) if (result->valueint == 1)
printf("\rT%d\t%s\t%d", idx, msg->valuestring, data->valueint); printf("\rT%d\t%s\t%d", idx, msg->valuestring, data->valueint);
else else
printf("\rT%d\t%s", idx, errorMsg->valuestring); fprintf(stderr, "\rT%d\t%s", idx, errorMsg->valuestring);
fflush(stdout); fflush(stdout);
free((void *)enc); free(enc.enc);
free(json_c.response); free(json_c.response);
cJSON_Delete(json); cJSON_Delete(json);
} }
fprintf(stderr, "\rSignal Received: exit. T%d exiting\n", idx);
printf("\rSignal Received: exit. T%d exiting\n", idx);
} }
void exit_handler() void exit_handler()