From 5536b8e814103487cc2d83ca82a44cd0bc19227d Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Wed, 26 Aug 2020 17:41:49 -0700 Subject: update plan --- plan.txt | 99 +++++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 64 insertions(+), 35 deletions(-) diff --git a/plan.txt b/plan.txt index a88eb2f..f0aa652 100644 --- a/plan.txt +++ b/plan.txt @@ -3,25 +3,56 @@ x filter requests by method and endpoint x parse query parameters (typed) x re-serialize query parameters into upstream request URL x method/body for denied requests -- create full request objects in tests -- bad request tests (parse error, disabled query types, etc) -- "completeness" over all the below query types and parameters -- real fatcat+scholar request tests -- minimize tokio feature flags -- see what other requests the default python and javascript client libraries use -- put ProxyConfig in Box? less cloning? -- config: TOML, env, args - => separate parse schema from options schema - => example file +x create full request objects in tests +x "completeness" over all the below query types and parameters +x real fatcat+scholar request tests +x minimize tokio feature flags +x package/release + x generate .deb file + x Makefile + x manpage + x example config + x README + x push git repo +x version flag ("--version") +x deb: include systemd unit file, and register it (?) +x Dockerfile +x systemd unit file +x add config (/etc/) to debian package config file list +x more methods/endpoints + x CORS headers on many more responses + x OPTIONS, HEAD for ping + x HEAD eg, for ping + x _mapping + x index bare +x headers + x enable CORS headers in the proxy itself? + x HEAD requests + x 'Via' header +- tests + - parse example_config.toml + - "get", "_doc", "_source" + - parse error + - unsupported query type +- play with https://search.qa.fatcat.wiki and observable (javascript) +- error handling + => refactor error categories + => return correct status code + => pretty-print errors better + => return a proper error when upstream is down +- update README + => summary + => installation + configuration + => development +- nginx: relaxed CORS methods, types +- histogram agg interval 0.0 (?) +- suggestions in search queries + https://www.elastic.co/guide/en/elasticsearch/reference/7.9/search-suggesters.html +- IPv6? +- more config: options, etc + => all indices as "unsafe_mode" - refactor unwrap() into error handling -- package/release - => generate .deb file - => Makefile - => manpage - => example config? - => README - => push git repo -- test in with https://search.qa.fatcat.wiki and observable (javascript) +- put ProxyConfig in Box? less cloning? parse method+path (index) -> which validation method method+path+params+body -> status, upstream request @@ -31,29 +62,26 @@ method+path+params+body -> status, upstream request - ping (?) -- basic info +x basic info GET / - (?) -- scroll +x scroll POST /_search/scroll -- clear scroll +x clear scroll DELETE /_search/scroll ## per-index endpoints - basic info; mapping + GET / GET //_mapping -- count +x count GET //_count -- get document +x get document GET //_doc/<_id> - HEAD //_doc/<_id> GET //_source/<_id> - HEAD //_source/<_id> -- search +x search GET //_search POST //_search -- mapping later: @@ -63,22 +91,22 @@ later: ## query types compound: -- bool -- boosting -- constant_score +x bool +x boosting +x constant_score filter (query) boost (float, optional) fulltext: -- match +x match (bare str allowed) query (str) -- match_phrase +x match_phrase (bare str allowed) value (str) -- multi_match +x multi_match x query_string - simple_query_string @@ -119,8 +147,9 @@ TODO: - headers - HTTP content-encoding: gzip - - content-type header; always JSON? + x content-type header; always JSON? - set "Via" header in responses (indicating proxy version/context) - https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html - logging - switch from 'url' to 'percent-encoding' (?) +- https://github.com/elastic/search-ui -- cgit v1.2.3