summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--smsmatrix.scm50
1 files changed, 26 insertions, 24 deletions
diff --git a/smsmatrix.scm b/smsmatrix.scm
index 7c1531a..61d6a8a 100644
--- a/smsmatrix.scm
+++ b/smsmatrix.scm
@@ -51,22 +51,23 @@
;; (if the URIs change the API probably changes too), but still...
;; Informational
-(define balance-uri "http://www.smsmatrix.com/balance")
(define carrier-uri "http://www.smsmatrix.com/carrier")
-(define csv-report-uri "http://www.smsmatrix.com/csv_report")
-(define status-uri "http://www.smsmatrix.com/matrix_status")
(define rate-uris
- '((sms . "https://www.smsmatrix.com/sms_rate")
- (voice . "https://www.smsmatrix.com/voice_rate")
- (tts . "https://www.smsmatrix.com/tts_rate")))
+ '((sms . "http://www.smsmatrix.com/sms_rate")
+ (voice . "http://www.smsmatrix.com/voice_rate")
+ (tts . "http://www.smsmatrix.com/tts_rate")))
+;; These require login, so use https
+(define balance-uri "https://www.smsmatrix.com/balance")
+(define status-uri "https://www.smsmatrix.com/matrix_status")
+(define csv-report-uri "https://www.smsmatrix.com/csv_report")
;; Sending messages
(define sms-uri "https://www.smsmatrix.com/matrix")
(define fax-uri "https://www.smsmatrix.com/matrix_fax")
-(define tts-uri "http://www.smsmatrix.com/matrix_tts")
-(define voice-upload-uri "http://www.smsmatrix.com/matrix_voice")
-(define voice-link-uri "http://www.smsmatrix.com/matrix_voicew")
-(define voice-tts-uri "http://www.smsmatrix.com/matrix_vtts")
+(define tts-uri "https://www.smsmatrix.com/matrix_tts")
+(define voice-upload-uri "https://www.smsmatrix.com/matrix_voice")
+(define voice-link-uri "https://www.smsmatrix.com/matrix_voicew")
+(define voice-tts-uri "https://www.smsmatrix.com/matrix_vtts")
;; All values from 0 - 399 (inclusive) mean success, other values mean failure.
;; Yes, this means this list is incomplete. Let's just hope they're not going
@@ -139,14 +140,16 @@
alist (next-line)))))))))))
(define (api-request loc uri params split-at required-result-values)
- (let* ((request (make-request method: 'POST uri: (uri-reference uri)))
- (res (call-with-input-request
- request params (lambda (port)
- (read-fields-as-alist port split-at)))))
+ (let ((res (call-with-input-request uri params
+ (lambda (port)
+ (read-fields-as-alist port split-at)))))
(for-each
(lambda (element)
- (unless (alist-ref element res)
- (error loc (conc "Did not return a value for \"" element "\"!"))))
+ (for-each
+ (lambda (entry)
+ (unless (alist-ref element entry)
+ (error loc (conc "Did not return a value for \"" element "\"!"))))
+ (if split-at res (list res))))
required-result-values)
res))
@@ -235,13 +238,12 @@
;; different than =-separated lists of key/value pairs and "email" vs "username"
(define (call-with-csv-report proc #!key username password limit incoming-only)
(let-auth 'csv-report username password
- (let* ((request (make-request method: 'POST
- uri: (uri-reference csv-report-uri)))
- (params `((email . ,username)
- (password . ,password)
- (limit . ,limit)
- (in . ,(if incoming-only 1 0)))))
- (call-with-input-request request params proc))))
+ (call-with-input-request csv-report-uri
+ `((email . ,username)
+ (password . ,password)
+ (limit . ,limit)
+ (in . ,(if incoming-only 1 0)))
+ proc)))
(define (send-sms recipients message #!key
username password group tts-fallback (error-on-failure #t))
@@ -255,7 +257,7 @@
(,recipient-type . ,recipients)
(txt . ,message)
(tts . ,(if tts-fallback 1 0)))
- 'pin '())))
+ 'pin '(id statuscode statustxt timestamp))))
;; Check for errors in phone number recipients if it was asked for
(when error-on-failure
(for-each (lambda (entry)