summaryrefslogtreecommitdiff
path: root/src/importer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/importer.cpp')
-rw-r--r--src/importer.cpp51
1 files changed, 27 insertions, 24 deletions
diff --git a/src/importer.cpp b/src/importer.cpp
index 3fe44a9..a533614 100644
--- a/src/importer.cpp
+++ b/src/importer.cpp
@@ -30,7 +30,10 @@
#include "locales.hpp"
#include "file_templates.hpp"
-ai_provider_impl _ai_get_impl()
+extern importer::ai_provider_impl _chatgpt_api_provider;
+extern importer::ai_provider_impl _deepseek_api_provider;
+
+importer::ai_provider_impl _ai_get_impl()
{
ai_provider provider = administration_get_ai_service().provider;
@@ -41,24 +44,24 @@ ai_provider_impl _ai_get_impl()
default: assert(0); break;
}
- return ai_provider_impl {0};
+ return importer::ai_provider_impl {0};
}
static int _ai_document_to_invoice_t(void *arg) {
- import_invoice_request* request = (import_invoice_request*)arg;
+ importer::invoice_request* request = (importer::invoice_request*)arg;
char* file_path = request->file_path;
- ai_provider_impl impl = _ai_get_impl();
+ importer::ai_provider_impl impl = _ai_get_impl();
- request->status = import_status::IMPORT_UPLOADING_FILE;
+ request->status = importer::status::IMPORT_UPLOADING_FILE;
char file_id[100];
if (!impl.upload_file(file_path, file_id, 100)) {
- request->status = import_status::IMPORT_DONE;
+ request->status = importer::status::IMPORT_DONE;
request->error = I_ERR_FAILED_UPLOAD;
return 0;
}
- request->status = import_status::IMPORT_QUERYING;
+ request->status = importer::status::IMPORT_QUERYING;
size_t query_buffer_len = 50000;
char* template_buffer = (char*)malloc(query_buffer_len);
@@ -99,18 +102,18 @@ static int _ai_document_to_invoice_t(void *arg) {
size_t query_len = strlen(template_buffer);
strncpy(template_buffer + query_len, ai_query, query_buffer_len - query_len);
- request->status = import_status::IMPORT_WAITING_FOR_RESPONSE;
+ request->status = importer::status::IMPORT_WAITING_FOR_RESPONSE;
char* response;
if (!impl.query_with_file(template_buffer, query_buffer_len, file_id, &response)) {
- request->status = import_status::IMPORT_DONE;
+ request->status = importer::status::IMPORT_DONE;
request->error = I_ERR_FAILED_QUERY;
return 0;
}
invoice inv;
if (!administration_reader::read_invoice_from_xml(&inv, response, strlen(response))) {
- request->status = import_status::IMPORT_DONE;
+ request->status = importer::status::IMPORT_DONE;
request->error = I_ERR_FAILED_IMPORT;
return 0;
}
@@ -142,17 +145,17 @@ static int _ai_document_to_invoice_t(void *arg) {
free(template_buffer);
free(response);
- request->status = import_status::IMPORT_DONE;
+ request->status = importer::status::IMPORT_DONE;
request->result = administration_invoice_create_copy(&inv);
return 0;
}
-import_invoice_request* ai_document_to_invoice(char* file_path)
+importer::invoice_request* importer::ai_document_to_invoice(char* file_path)
{
- import_invoice_request* result = (import_invoice_request*)malloc(sizeof(import_invoice_request));
+ importer::invoice_request* result = (importer::invoice_request*)malloc(sizeof(importer::invoice_request));
result->started_at = time(NULL);
result->error = I_ERR_SUCCESS;
- result->status = import_status::IMPORT_STARTING;
+ result->status = importer::status::IMPORT_STARTING;
strops::copy(result->file_path, file_path, MAX_LEN_PATH);
thrd_t thr;
@@ -163,26 +166,26 @@ import_invoice_request* ai_document_to_invoice(char* file_path)
return result;
}
-const char* import_status_to_str(import_status status)
+const char* importer::status_to_string(importer::status status)
{
switch(status)
{
- case import_status::IMPORT_STARTING: return locale::get("import.status.starting");
- case import_status::IMPORT_UPLOADING_FILE: return locale::get("import.status.uploading_file");
- case import_status::IMPORT_QUERYING: return locale::get("import.status.querying");
- case import_status::IMPORT_WAITING_FOR_RESPONSE: return locale::get("import.status.waiting_for_result");
- case import_status::IMPORT_DONE: return locale::get("import.status.done");
+ case importer::status::IMPORT_STARTING: return locale::get("import.status.starting");
+ case importer::status::IMPORT_UPLOADING_FILE: return locale::get("import.status.uploading_file");
+ case importer::status::IMPORT_QUERYING: return locale::get("import.status.querying");
+ case importer::status::IMPORT_WAITING_FOR_RESPONSE: return locale::get("import.status.waiting_for_result");
+ case importer::status::IMPORT_DONE: return locale::get("import.status.done");
}
return "";
}
-const char* import_error_to_str(i_err error)
+const char* importer::error_to_string(importer::i_err error)
{
switch(error)
{
- case I_ERR_FAILED_UPLOAD: return locale::get("import.error.upload");
- case I_ERR_FAILED_QUERY: return locale::get("import.error.query");
- case I_ERR_FAILED_IMPORT: return locale::get("import.error.import");
+ case I_ERR_FAILED_UPLOAD: return locale::get("import.error.upload");
+ case I_ERR_FAILED_QUERY: return locale::get("import.error.query");
+ case I_ERR_FAILED_IMPORT: return locale::get("import.error.import");
}
return "";
} \ No newline at end of file