summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plan.txt99
1 files 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 /<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