aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@archive.org>2020-08-22 15:41:49 -0700
committerBryan Newbold <bnewbold@archive.org>2020-08-22 15:41:49 -0700
commitbb552c9d0060cf49e187d1b06460a838ef19828d (patch)
treea1cb02c57a73e883a863f0520f435da207d4715f
parent754c2fa6b875b132ca39093678549b620e190817 (diff)
downloades-public-proxy-bb552c9d0060cf49e187d1b06460a838ef19828d.tar.gz
es-public-proxy-bb552c9d0060cf49e187d1b06460a838ef19828d.zip
start on test framework and query JSON parser
-rw-r--r--src/lib.rs35
-rw-r--r--tests/files/GET_uri_search.txt1
-rw-r--r--tests/parse_es_requests.rs4
3 files changed, 40 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 0000000..1ba6207
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,35 @@
+
+use serde::{Serialize, Deserialize};
+
+#[derive(Serialize, Deserialize, Debug)]
+pub struct ApiRequest {
+ pub method: String,
+ pub path_and_query: String,
+ pub body: Option<ApiBody>,
+}
+
+#[derive(Serialize, Deserialize, Debug)]
+pub struct ApiBody {
+ pub query: Option<ApiQuery>,
+ pub from: Option<u32>,
+ pub size: Option<u32>,
+ pub sort: Option<String>, // XXX
+ pub slice: Option<String>, // XXX
+}
+
+#[derive(Serialize, Deserialize, Debug)]
+pub enum ApiQuery {
+ #[serde(rename = "match")]
+ Match(MatchQuery),
+}
+
+#[derive(Serialize, Deserialize, Debug)]
+pub struct MatchQuery {
+ message: QueryField,
+}
+
+#[derive(Serialize, Deserialize, Debug)]
+pub struct QueryField{
+ query: String,
+ fuzziness: Option<String>,
+}
diff --git a/tests/files/GET_uri_search.txt b/tests/files/GET_uri_search.txt
new file mode 100644
index 0000000..e5e0567
--- /dev/null
+++ b/tests/files/GET_uri_search.txt
@@ -0,0 +1 @@
+GET /my-index-000001/_search?q=user.id:kimchy
diff --git a/tests/parse_es_requests.rs b/tests/parse_es_requests.rs
index e918da9..01ea64a 100644
--- a/tests/parse_es_requests.rs
+++ b/tests/parse_es_requests.rs
@@ -1,4 +1,6 @@
+use es_public_proxy::ApiBody;
+
mod common;
#[test]
@@ -13,4 +15,6 @@ fn basic_parse() {
let request = common::load_request("GET_search");
assert_eq!(request.method, "GET");
assert_eq!(request.path_and_query, "/_search");
+
+ let thing: ApiBody = serde_json::from_str(&request.body.unwrap()).unwrap();
}