Commit678f2fe1Recorded29 Mar 2026Repositorysigil-wise

Use shared API client helpers from (sigil http client)

Message

Replace local wise-api-url and wise-get/json with build-api-url and make-response-checker from the shared library.

Changed
 src/wise.sgl | 39 +++++++++++----------------------------
 1 file changed, 11 insertions(+), 28 deletions(-)
Diff
src/wise.sglmodified
@@ -98,38 +98,21 @@
98
99
;;; Build an API URL from the client base URL and path segments.
100
(define (wise-api-url client . parts)
101
(apply string-append (wise-client-base-url client)
102
(map (lambda (p) (string-append "/" p)) parts)))
+101
(apply build-api-url (wise-client-base-url client) parts))
102
103
+104
;;; Response checker with Wise-specific error context.
+105
(define check-wise-response
+106
(make-response-checker
+107
name: "Wise API"
+108
handlers: (list
+109
(cons 403 "This may be an SCA restriction for UK/EEA accounts. See https://docs.wise.com for SCA re-authentication.")
+110
(cons 429 "Rate limited. Retry after a delay."))))
+111
112
;;; Perform an authenticated GET request and return parsed JSON.
106
;;; Raises an error on HTTP status >= 400, with Wise-specific context.
113
(define (wise-get/json client url)
108
(let ((response (http-get url headers: (wise-auth-headers client))))
109
(if (not (http-response? response))
110
(error "Wise API request failed: no response"))
111
(let ((status (http-response-status response))
112
(body (http-response-body response)))
113
(cond
114
((= status 403)
115
(error (string-append
116
"Wise API 403 Forbidden. "
117
"This may be an SCA restriction for UK/EEA accounts. "
118
"See https://docs.wise.com for SCA re-authentication. "
119
"Response: " (or body ""))))
120
((= status 429)
121
(error (string-append
122
"Wise API 429 rate limited. "
123
"Retry after a delay. "
124
"Response: " (or body ""))))
125
((>= status 400)
126
(error (string-append
127
"Wise API error " (number->string status) ": "
128
(or body ""))))
129
(else
130
(if (and body (not (string=? body "")))
131
(json-decode body)
132
#t))))))
+114
(check-wise-response
+115
(http-get url headers: (wise-auth-headers client))))
116
117
;; ---------------------------------------------------------------
118
;; Response parsing