diff options
Diffstat (limited to 'plan.txt')
-rw-r--r-- | plan.txt | 73 |
1 files changed, 47 insertions, 26 deletions
@@ -1,18 +1,31 @@ -TODO: see what other requests the default python and javascript client libraries use - -## basics - -- config: TOML, env, args -- filter requests by method and endpoint -- filter query parameters -- parse request bodies (queries) -- method/body for denied requests -- async streaming responses +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 +- 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) + +parse method+path (index) -> which validation method +method+path+params+body -> status, upstream request -factoring: -- validate query method (method, path, query, body) ## general endpoints @@ -29,7 +42,7 @@ factoring: ## per-index endpoints - basic info; mapping - (?) + GET /<index>/_mapping - count GET /<index>/_count - get document @@ -40,6 +53,7 @@ factoring: - search GET /<index>/_search POST /<index>/_search +- mapping later: @@ -65,31 +79,34 @@ fulltext: (bare str allowed) value (str) - multi_match -- query_string +x query_string - simple_query_string term-level: -- range +x exists + field (str) +x ids + values (array of str) +x prefix +x range <field> gt, gte, lt, lte: str or number -- term +- NOT regex (?) +x term <field> value: str or number -- terms +x terms + does not support "lookup" from other indices <field> (array of str or number) -- wildcard +x wildcard <field> value (str) boost (float, optional) rewrite (str, optional) -- exists - field (str) -- ids - values (array of str) -- match_all +x match_all boost (float, optional) -- match_none +x match_none boost (float, optional) @@ -100,6 +117,10 @@ TODO: ## additional stuff -- HTTP content-encoding: gzip -- content-type header; always JSON? +- headers + - HTTP content-encoding: gzip + - 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' (?) |