aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-08-27 20:43:35 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-08-27 20:43:35 +0200
commit90b7ef271e06dcca56745bf0bc9012eb24887bb1 (patch)
tree8f8ef3b6ea5c504c96717886d5d047e5a05d3b4a
parentBump version. (diff)
downloadcalp-90b7ef271e06dcca56745bf0bc9012eb24887bb1.tar.gz
calp-90b7ef271e06dcca56745bf0bc9012eb24887bb1.tar.xz
Add /search/text endpoint.
-rw-r--r--module/calp/server/routes.scm16
-rw-r--r--module/calp/util.scm3
2 files changed, 19 insertions, 0 deletions
diff --git a/module/calp/server/routes.scm b/module/calp/server/routes.scm
index f647b998..865c11c7 100644
--- a/module/calp/server/routes.scm
+++ b/module/calp/server/routes.scm
@@ -11,6 +11,7 @@
:use-module ((web response) :select (build-response))
:use-module ((web uri) :select (build-relative-ref))
+ :use-module ((web uri-query) :select (encode-query-parameters))
:use-module (sxml simple)
:use-module (sxml xpath)
@@ -345,6 +346,21 @@
(return (build-response code: 404)
(format #f "No component with UID=~a found." uid))))
+ (GET "/search/text" (q)
+ (return (build-response
+ code: 302
+ headers:
+ `((location
+ . ,(build-relative-ref
+ path: "/search/"
+ query:
+ (encode-query-parameters
+ `((q . (regexp-exec
+ (make-regexp ,(->quoted-string q)
+ regexp/icase)
+ (prop event 'SUMMARY)))))
+ ))))))
+
(GET "/search" (q p)
(define search-term (and=> q prepare-string))
diff --git a/module/calp/util.scm b/module/calp/util.scm
index 25c753dc..7c176c50 100644
--- a/module/calp/util.scm
+++ b/module/calp/util.scm
@@ -533,6 +533,9 @@
(define-public ->string ->str)
+(define-public (->quoted-string any)
+ (with-output-to-string (lambda () (write any))))
+
(define-public (path-append . strings)
(fold (lambda (s done)
(string-append