]> git.armaanb.net Git - bettersearch.git/blobdiff - server.rkt
Remove unused requires
[bettersearch.git] / server.rkt
index 81abf7cb1b0cbdd5fe3edf0bcf9260dea6f7b530..2b13b6c4a15e73dafe78f1ab778acfaf001b2aec 100644 (file)
@@ -1,8 +1,6 @@
 #lang racket
 
 (require json)
-(require net/url)
-(require web-server/formlets)
 (require web-server/servlet)
 (require web-server/servlet-env)
 (require web-server/templates)
 
 (define-values (dispatch generate-url)
   (dispatch-rules
-    [("index") do-index]
+    [("") do-index]
     [("search") do-search]
     ))
 
+(define (do-head title)
+  (include-template "templates/head.html"))
+
+(define (do-footer)
+  (include-template "templates/footer.html"))
+
 (define (do-index req)
-      (http-response (include-template "index.html")))
+  (http-response (string-append
+                  (do-head "Web Search")
+                  (include-template "templates/index.html")
+                  (do-footer))))
 
-(define (search query)
+(define (search query pageno)
   (define engine (string->url
                   (string-append
-                    "https://search.trom.tf/search?format=json&q=" query)))
+                      "https://search.trom.tf/search?format=json&q="
+                      query
+                      "&pageno="
+                      pageno
+                      )))
   (define response (get-pure-port engine))
   (define json-raw (port->string response))
   (close-input-port response)
   (with-input-from-string json-raw (lambda () (read-json))))
 
-(define (http-response content)  ; The 'content' parameter should be a string.
+(define (http-response content)
   (response/full
-    200                  ; HTTP response code.
-    #"OK"                ; HTTP response message.
-    (current-seconds)    ; Timestamp.
-    TEXT/HTML-MIME-TYPE  ; MIME type for content.
-    '()                  ; Additional HTTP headers.
-    (list                ; Content (in bytes) to send to the browser.
+    200
+    #"OK"
+    (current-seconds)
+    TEXT/HTML-MIME-TYPE
+    '()
+    (list
       (string->bytes/utf-8 content))))
 
 (define (do-search req)
@@ -48,6 +59,9 @@
 
   (if (non-empty-string? query)
     (let ()
+      (define pageno (if (exists-binding? 'pageno binds)
+                      (extract-binding/single 'pageno binds)
+                      "1"))
       (define results
        (foldr cons '()
               (filter hash?
                            )
                          ht
                      ))
-                   (hash-ref (search query) 'results)))))
-      (http-response (include-template "search.html")))
-    (do-index req)))
+                   (hash-ref (search query pageno) 'results)))))
+      (http-response (string-append
+                      (do-head (string-append query " | Web Search"))
+                      (include-template "templates/search.html")
+                      (do-footer))))
+    (redirect-to "/")))
 
 (serve/servlet dispatch
               #:command-line? #t