-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathClient.h
110 lines (68 loc) · 3.16 KB
/
Client.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//
// Created by miguel on 6/6/22.
//
#pragma once
#include <string>
#include <curl/curl.h>
#include "utilities/logger/logger.h"
#include "utilities/querybuilder/queries.h"
#include "simdjson.h"
/**
* Client which will execute queries to elasticsearch
* @param hostParam elasticsearch host
* @param portParam elasticsearch port
*/
class Client {
private:
std::string HOST;
int PORT;
std::string baseUrl;
std::string executionUrl;
CURL *curl{};
struct curl_slist *header{};
std::string readBuffer;
void setCurlParams(const std::string &requestMode, const std::string &query) const;
void setCurlParamsWithoutPostBody(const std::string &requestMode) const;
//Function overloading for different executions via cURL
CURLcode executeQuery(const std::string &requestMode, const std::string &query);
CURLcode executeQuery(const std::string &requestMode);
CURLcode executeQuery(const std::string &index, QueryBuilder query, const std::string &requestMode);
void initCurlDefaults();
void resetReadBuffer();
public:
Logger log{};
explicit Client(const std::string &hostParam, int portParam);
~Client();
std::string getReadBuffer() const;
std::string getHost() const;
int getPort() const;
void setHost(const std::string &hostParam);
// Several queries
CURLcode elasticUnderscoreApi(const std::string &index, const std::string &api, const std::string &query,
const std::string &requestMode);
CURLcode elasticUnderscoreApi(const std::string &index, const std::string &api);
CURLcode elasticUnderscoreApi(const std::string &index, const std::string &api, const std::string &query,
const std::string &documentID,
const std::string &requestMode);
CURLcode elasticSingleRequest(const std::string &index, const std::string &query, const std::string &requestMode);
CURLcode elasticSingleRequest(const std::string &index, const std::string &requestMode);
CURLcode search(const std::string &index, const std::string &query);
CURLcode search(const std::string &index);
CURLcode count(const std::string &index);
CURLcode count(const std::string &index, const std::string &query);
CURLcode refresh(const std::string &index);
CURLcode bulk(const std::string);
CURLcode remove(const std::string &index);
CURLcode index(const std::string &indexName, const std::string &query);
CURLcode index(const std::string &indexName);
CURLcode update(const std::string &index, const std::string &query, const std::string &id);
//TODO: Eventually put it into the index function
CURLcode insertDocument(const std::string &index, const std::string &body, const std::string &id);
CURLcode insertDocument(const std::string &index, const std::string &query);
CURLcode stringQuery(const std::string &requestMode, const std::string &index, const std::string &query);
//1L will activate verbose output and 0L will deactivate it.
void verboseLogging(long param);
void setHeader(const std::string &headerOptions);
void resetHeader();
void cleanUp();
};