diff options
Diffstat (limited to 'web/webserver.scm')
-rwxr-xr-x | web/webserver.scm | 52 |
1 files changed, 22 insertions, 30 deletions
diff --git a/web/webserver.scm b/web/webserver.scm index 1e48285..d40621f 100755 --- a/web/webserver.scm +++ b/web/webserver.scm @@ -167,7 +167,7 @@ otherwise search for set/group data" (lambda () (let* ((params (decode-query (uri-query (request-uri request)))) (query_path (assoc-ref params 'file_path))) (if query_path - ;;add check for is repo + ;;TODO add check for is repo (build-json-response 400 (fetch-file repo query_path)) (throw 'file-error (string-append "Please provide a valid file path in the query")) ) @@ -176,43 +176,37 @@ otherwise search for set/group data" (lambda (key . args) (let ((msg (car args))) (build-json-response 400 `(("error" . ,key) ("msg" . ,msg)))) ))) - -(define global-repo "/home/kabui/test_repo") ;; todo ;; fix this ;;check on how to define global variables - - +(define global-repo "/home/kabui/test_repo") ;; todo ;; fix this (define (is-invalid-data? data target) - ;;maybe apply items here - (let ((target target) (b 2)) - (display target) - ) (if (string? (assoc-ref data target)) (if (string-null? (assoc-ref data target)) (throw 'system-error (format #f "Value for Key *** ~a *** Cannot be Empty" target)) (assoc-ref data target) ) - (throw 'system-error (format #f "The Key *** ~a *** is missing in your Data" target)) - ) - ) + (throw 'system-error (format #f "The Key *** ~a *** is missing in your Json Data" target)) + )) (define (commit-file-handler repo request body) - ;; add validations for email and fetch content - ;;write a macro for this too repetettive ;; may extracting keys and data + ;; TODO add validations for is email ;; maybe send a request to gn-auth + ;;call gn-auth to validate token + ;; TODO add validation for valid markdown (catch 'system-error (lambda () - ;; to much repetition - ;; (lamba (data , values (for-each lambda (value) check here thow error) - ;; maybe change data you pass - (let* ((post-data (decode-request-json body)) - (file-name (is-invalid-data? post-data "filename")) - (content (is-invalid-data? post-data "content")) - (username (is-invalid-data? post-data "username")) - (email (is-invalid-data? post-data "email")) - (commit-message (is-invalid-data? post-data "commit")) - ) - - (build-json-response 200 (commit-file global-repo file-name content commit-message username email)) - ) - ) + (let* ((post-data + (decode-request-json body) + ) + (_ (for-each (lambda (target) + (is-invalid-data? post-data target) + ) '("filename" "content" "username" "email" "commit")) + ) + (file-name (assoc-ref post-data "filename")) + (content (assoc-ref post-data "content")) + (username (assoc-ref post-data "username")) + (email (assoc-ref post-data "email")) + (commit-message (assoc-ref post-data "commit")) + ) + (build-json-response 200 (commit-file repo file-name content commit-message username email)) + )) (lambda (key . args) (let ((msg (car args))) (build-json-response 400 `(("error" . ,key) ("msg" . ,msg)))) )) ) @@ -289,6 +283,4 @@ otherwise search for set/group data" (newline) (let ((listen (inexact->exact (string->number (car (cdr args)))))) (display `("listening on" ,listen)) - ;; (write listen) - ;; (run-server hello-world-handler 'http `(#:port ,listen)))) (start-web-server "127.0.0.1" listen))) |