diff options
Diffstat (limited to 'internal/server/mux.go')
-rw-r--r-- | internal/server/mux.go | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/internal/server/mux.go b/internal/server/mux.go index f7a82d8..968b37c 100644 --- a/internal/server/mux.go +++ b/internal/server/mux.go @@ -93,12 +93,15 @@ func NewMux( } } - ctx, cancel := context.WithTimeout(r.Context(), searchTimeout) - defer cancel() - if r.URL.Query().Has("query") { qs := r.URL.Query().Get("query") + if len(qs) < 2 { + errorHandler(w, r, "Query too short", http.StatusBadRequest) + + return + } + var pageSize int = search.DefaultPageSize var pageNumber = 1 if pg := r.URL.Query().Get("page"); pg != "" { @@ -110,11 +113,15 @@ func NewMux( } if pageNumber == 0 { pageNumber = 1 - pageSize = math.MaxInt + pageSize = config.MaxResultsShowAll } } page := pagination.New(pageNumber, pageSize) + + ctx, cancel := context.WithTimeout(r.Context(), searchTimeout) results, err := index.Search(ctx, source, qs, page.From, page.Size) + cancel() + if err != nil { if err == context.DeadlineExceeded { errorHandler(w, r, "Search timed out", http.StatusInternalServerError) @@ -126,7 +133,8 @@ func NewMux( return } - if pageSize == math.MaxInt && results.Total > config.MaxResultsShowAll { + if pageSize == config.MaxResultsShowAll && + results.Total > config.MaxResultsShowAll { errorHandler(w, r, "Too many results, use pagination", http.StatusBadRequest) } @@ -219,9 +227,9 @@ func NewMux( importerSingular := importerType.Singular() ctx, cancel := context.WithTimeout(r.Context(), searchTimeout) - defer cancel() - doc, err := index.GetDocument(ctx, source, r.PathValue("id")) + cancel() + if err != nil { errorHandler( w, |