Organisation, documentation, mathlib

This commit is contained in:
2025-08-28 11:11:59 +10:00
parent a9bfc1b0e3
commit 6596bfcc85
13 changed files with 948 additions and 1 deletions

View File

@@ -0,0 +1,52 @@
#include "ground_lib.h"
#include <cpr/cpr.h>
#include <cpr/interface.h>
#include <fstream>
void error(std::string status) {
std::cout << "Request error: " << status << std::endl;
}
GroundValue simpleRequest(GroundValue* args, int arg_count) {
VALIDATE_ARGS_1(GROUND_STRING);
cpr::Response r = cpr::Get(cpr::Url(GET_STRING(args[0])));
if (!(r.status_code >= 200 && r.status_code < 300)) {
error("Non zero HTTP code " + std::to_string(r.status_code));
return ground_string_val("Error code " + std::to_string(r.status_code));
}
return ground_string_val(r.text);
}
GroundValue saveContents(GroundValue* args, int arg_count) {
VALIDATE_ARGS_2(GROUND_STRING, GROUND_STRING);
std::ofstream file(GET_STRING(args[1]), std::ios::binary);
if (file.good()) {
cpr::Response r = cpr::Download(file, cpr::Url{GET_STRING(args[0])});
if (!(r.status_code >= 200 && r.status_code < 300)) {
error("Non zero HTTP code " + std::to_string(r.status_code));
return GROUND_BOOL_VAL(false);
}
} else {
error(std::string("Cannot open file ") + GET_STRING(args[1]) + " for writing");
return GROUND_BOOL_VAL(false);
}
return GROUND_BOOL_VAL(true);
}
GROUND_LIBRARY_INTERFACE()
GROUND_LIBRARY_INIT()
REGISTER_GROUND_FUNCTION(simpleRequest);
REGISTER_GROUND_FUNCTION(saveContents);
GROUND_LIBRARY_INIT_END()
GROUND_LIBRARY_CLEANUP()
GROUND_LIBRARY_CLEANUP_END()