diff options
-rw-r--r-- | plan.txt | 99 |
1 files changed, 64 insertions, 35 deletions
@@ -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 /<index> GET /<index>/_mapping -- count +x count GET /<index>/_count -- get document +x get document GET /<index>/_doc/<_id> - HEAD /<index>/_doc/<_id> GET /<index>/_source/<_id> - HEAD /<index>/_source/<_id> -- search +x search GET /<index>/_search POST /<index>/_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 <field> (bare str allowed) query (str) -- match_phrase +x match_phrase <field> (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 |