url-helpers.scm 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. ;; (define-module (url-helpers)
  2. ;; #:export (make-complete-api-url
  3. ;; scm-json->uri-encoded-string))
  4. ;; (use-modules (web client)
  5. ;; (web uri)
  6. ;; (json))
  7. ;; (define (make-complete-api-url api-route query-params-as-string)
  8. ;; (string-append api-route "?" query-params-as-string))
  9. ;; (define (scm-json->uri-encoded-string scm-json)
  10. ;; "The argument scm-json is the Scheme representation of guile-json
  11. ;; for JSON."
  12. ;; (uri-encode (scm->json-string scm-json)))
  13. #;(define (data->query-params data)
  14. (cond
  15. [(null? data)
  16. (display (simple-format #f "CASE: ~s\n" "null"))
  17. "}"]
  18. [(vector? data)
  19. (display (simple-format #f "CASE: ~s\n" "vector"))
  20. (string-append "["
  21. (string-join (map data->query-params (vector->list data)) ",")
  22. "]")]
  23. [(pair? data)
  24. (display (simple-format #f "CASE: ~s\n" "pair"))
  25. (cond
  26. [(string? (car data))
  27. (string-append (car data)
  28. "="
  29. (data->query-params (cdr data)))]
  30. ;; should be pair
  31. [else (string-append (data->query-params (car data))
  32. "&"
  33. (data->query-params (cdr data)))])]
  34. ;; should be primitive data
  35. [(number? data)
  36. (display (simple-format #f "CASE: ~s\n" "number"))
  37. (number->string data)]
  38. [(boolean? data)
  39. (display (simple-format #f "CASE: ~s\n" "boolean"))
  40. (if data "true" "false")]
  41. [else
  42. ;; should be string
  43. (string-append "" data "")]))