diff --git a/src/page-wiki.rkt b/src/page-wiki.rkt index 82956e4..707157a 100644 --- a/src/page-wiki.rkt +++ b/src/page-wiki.rkt @@ -96,17 +96,20 @@ (easy:response-body dest-res)))])) (define (page-wiki-with-data req) - (define post-data/bytes (request-post-data/raw req)) - (define post-data/string (bytes->string/utf-8 post-data/bytes)) - (define post-data (string->jsexpr post-data/string)) - (define wikiname (jp "/wikiname" post-data)) - (define path (jp "/path" post-data)) - (take-json-rewrite-and-return-page - #:req req - #:wikiname wikiname - #:source-url (format "https://~a.fandom.com/wiki/~a" wikiname path) - #:data (jp "/data" post-data) - #:siteinfo (data->siteinfo (jp "/siteinfo" post-data)))) + (response-handler + (define post-data/bytes (request-post-data/raw req)) + (when (not post-data/bytes) + (raise-user-error 'page-wiki-with-data "POST requests only, please.")) + (define post-data/string (bytes->string/utf-8 post-data/bytes)) + (define post-data (string->jsexpr post-data/string)) + (define wikiname (jp "/wikiname" post-data)) + (define path (jp "/path" post-data)) + (take-json-rewrite-and-return-page + #:req req + #:wikiname wikiname + #:source-url (format "https://~a.fandom.com/wiki/~a" wikiname path) + #:data (jp "/data" post-data) + #:siteinfo (data->siteinfo (jp "/siteinfo" post-data))))) (define (take-json-rewrite-and-return-page #:req req #:wikiname wikiname #:source-url source-url #:data data #:siteinfo siteinfo) (define title (jp "/parse/title" data ""))