X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=server.rkt;h=2b13b6c4a15e73dafe78f1ab778acfaf001b2aec;hb=4cf9cd77acc6cc8f5d8165cf50b3e8cf3395a333;hp=42da28635db7c462026ea9d7e36b0516f858f056;hpb=a9a5b5052fd87d1d7fd66ff68764ab87a2379a80;p=bettersearch.git diff --git a/server.rkt b/server.rkt index 42da286..2b13b6c 100644 --- a/server.rkt +++ b/server.rkt @@ -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) @@ -30,23 +28,27 @@ (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 heads. - (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) @@ -57,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? @@ -76,7 +81,7 @@ ) ht )) - (hash-ref (search query) 'results))))) + (hash-ref (search query pageno) 'results))))) (http-response (string-append (do-head (string-append query " | Web Search")) (include-template "templates/search.html")