breezewiki/src/page-global-search.rkt

33 lines
1019 B
Racket

#lang racket/base
(require racket/dict
; web server libs
net/url
web-server/http
"application-globals.rkt"
"data.rkt"
"../lib/url-utils.rkt"
"../lib/xexpr-utils.rkt")
(provide
page-global-search)
(define (page-global-search req)
(define wikiname (dict-ref (url-query (request-uri req)) 'wikiname #f))
(define q (dict-ref (url-query (request-uri req)) 'q #f))
(response-handler
(cond
[(not wikiname)
(response/output
#:code 400
#:mime-type #"text/plain"
(λ (out)
(displayln "Requires wikiname and q parameters." out)))]
[(or (not q) (equal? q ""))
(define siteinfo (siteinfo-fetch wikiname))
(define dest (format "/~a/wiki/~a" wikiname (or (siteinfo^-basepage siteinfo) "Main_Page")))
(generate-redirect dest)]
[#t
(generate-redirect (format "/~a/search?~a"
wikiname
(params->query `(("q" . ,q)))))])))