SolarEnergy/esp32_device/main/secure_api.c

62 lines
1.4 KiB
C
Raw Normal View History

2024-08-18 18:13:03 +00:00
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "secure_api.h"
#include "storage.h"
#include "http_client.h"
#include "constants.h"
#include "esp_log.h"
static const char *TAG = "secure_api";
static char *process_secure_request(const char *uri)
{
char *url = calloc(1, 255);
assert(url);
size_t orig_len = storage_get_secure_origin(url);
assert(orig_len > 0);
strcat(url + strlen(url), uri);
ESP_LOGI(TAG, "HTTP request on %s", url);
char *root_cat = calloc(1, ROOT_CA_MAX_BYTES);
assert(root_cat);
assert(storage_get_root_ca(root_cat) > 0);
http_request_opts opts = {
.url = url,
.root_ca = root_cat};
char *res = http_client_exec(&opts);
free(url);
free(root_cat);
return res;
}
enum DevEnrollmentStatus secure_api_get_device_enrollment_status()
{
ESP_LOGI(TAG, "Will check device enrollment status");
// Prepare URI
char *uri = calloc(1, 255);
assert(uri);
sprintf(uri, "/devices_api/mgmt/enrollment_status?id=");
assert(storage_get_dev_name(uri + strlen(uri)) > 0);
char *res = process_secure_request(uri);
free(uri);
if (res == NULL)
{
ESP_LOGE(TAG, "Failed to query device enrollment status!");
return DevEnrollError;
}
// TODO : parse reponse
printf("response = %s\n", res);
free(res);
return DevEnrollError;
}