PasteRack.org
Paste # 97997
2017-11-21 14:50:34

Fork as a new paste.

Paste viewed 74 times.


Embed:

#lang racket/base
(require net/base64
         net/http-client
         json
         threading)



(define plivo-id (make-parameter #f))
(define plivo-token (make-parameter #f))



(define (generate-msg)
  (format "REPORTE TX: ~a~nR: ~a (~a)~nM: ~a (~a)~nJ: ~a (~a)"
          "6-9AM" 50 500 20 400 24 300))


(define (sms-uri id)
  (format "/v1/Account/~a/Message/" id))


(define (basic-auth-string id token)
  (~> (format "~a:~a" id token)
      string->bytes/utf-8
      (base64-encode "") ; no "\r\n" at the end
      bytes->string/utf-8))


(define (payload dst msg)
  (~> (hasheq 'src "some-phone-number")
      (hash-set 'dst dst)
      (hash-set 'text msg)
      jsexpr->string))


(define (plivo/http-post uri payload bauth)
  (http-sendrecv "api.plivo.com"
                 uri
                 #:ssl? #t
                 #:method "POST"
                 #:data payload
                 #:headers
                 (list "Content-Type: application/json"
                       (string-append "Authorization: Basic " bauth))))



(module+ main

  (plivo-id (getenv "AUTH_ID"))
  (plivo-token (getenv "AUTH_TOKEN"))

  (define msg (generate-msg))

 
  (let ((uri   (sms-uri (plivo-id)))
        (pload (payload "destination-" msg))
        (bauth (basic-auth-string (plivo-id) (plivo-token))))
    (let-values
        (((response res-headers in-port)
          (plivo/http-post uri pload bauth)))
      (cond
        ((regexp-match? "ACCEPTED$" response)
         (displayln  response))
        (else
         (displayln res-headers)
         (error 'sms-send-failed))))))

=>

standard-module-name-resolver: collection not found
  for module path: threading
  collection: "threading"
  in collection directories:
   /home/pasterack/.racket/6.8/collects
   /home/pasterack/racket68/collects
   ... [161 additional linked and package directories]
  context...:
   show-collection-err
   standard-module-name-resolver
   /home/pasterack/racket68/collects/racket/require-transform.rkt:266:2: expand-import
   /home/pasterack/racket68/collects/racket/private/reqprov.rkt:571:24
   /home/pasterack/racket68/collects/racket/private/reqprov.rkt:559:5
   /home/pasterack/racket68/collects/racket/require-transform.rkt:266:2: expand-import
   /home/pasterack/racket68/collects/racket/private/reqprov.rkt:266:21: try-next
   /home/pasterack/racket68/collects/racket/private/reqprov.rkt:348:21: try-next
   /home/pasterack/racket68/collects/racket/private/reqprov.rkt:243:2
   /home/pasterack/racket68/collects/syntax/wrap-modbeg.rkt:46:4
   standard-module-name-resolver
   loop
   ...cket/cmdline.rkt:179:51
   /home/pasterack/racket68/share/pkgs/scribble-lib/scribble/run.rkt: [running body]