Skip to content

defclass/clj-sendcloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

clj-sendcloud

A Clojure library designed to support Sendcloud API.

As Sendcloud APIv2 don't support HTTPS, this lib just support APIv1.

Usage

clj-sendcloud use clj-http as http client, make sure add clj-http dependencies. eg:

[clj-http "2.1.0"]

Add clj-sendcloud dependence:

Clojars Project

Examples:

(require '[clj-sendcloud.core :as s])

;; tlist
(s/tlist {:api_user "XXXXXXXX" :api_key "XXXXXXXX"} {})
; => 
;["https://sendcloud.sohu.com/webapi/template.get.json" {:api_user "XXXXXXXX", :api_key "XXXXXXXX"}]

;; wrap-request
(->> (tlist {:api_user "XXXXXXXX" :api_key "XXXXXXXX"} {}) 
     s/wrap-request)
; =>     
;["https://sendcloud.sohu.com/webapi/template.get.json"
; {:body "api_user=XXXXXXXX&api_key=XXXXXXXX",
;  :content-type "application/x-www-form-urlencoded",
;  :as :json,
;  :coerce :always}]

;; clj-http request
(require '[clj-http.client :as c])

(->> (s/tlist {:api_user "XXXXX" :api_key  "XXXXX"} {})
     s/wrap-request 
     (apply c/post))

; => 
;{:status 200,
; :headers {"Server" "nginx",
;           "Date" "Wed, 15 Jun 2016 08:08:31 GMT",
;           "Content-Type" "application/json;charset=UTF-8",
;           "Transfer-Encoding" "chunked",
;           "Connection" "close"},
; :body ... ,
; :request-time 246,
; :trace-redirects ["https://sendcloud.sohu.com/webapi/template.get.json"],
; :orig-content-encoding "gzip",
; :cookies ... }


;; template send. Note that: if `:to` key which in `:substitution_vars` 
;; have more than one element,the `:api_user` type should be `batch` , and 
;; the template type should be `batch` as well.  

(->> (s/send-tpl {:api_user "XXXXXX"
                  :api_key  "XXXXXX"}
                 {:from    "XXX@XXX.cn"
                  :template_invoke_name "new_order_confirm"
                  :substitution_vars {:to ["somebody-email-address@qq.com"]
                                      :sub {:%user_name% ["test_user"]
                                            :%total_price% [1123]}}})

     (s/wrap-request)
     (apply c/post))

; => 
; {:status 200,
;  :headers
;  {"Server" "nginx",
;   "Date" "Mon, 20 Jun 2016 09:09:02 GMT",
;   "Content-Type" "application/json;charset=UTF-8",
;   "Transfer-Encoding" "chunked",
;   "Connection" "close"},
;  :body {:message "success"},
;  :request-time 704,
;  :trace-redirects
;  ["https://sendcloud.sohu.com/webapi/mail.send_template.json"],
;  :orig-content-encoding "gzip",
;  :cookies
;  {"sceroute_c1ba81468573a7be0bc71aebe26c46c3"
;   {:discard true,
;    :path "/",
;    :secure false,
;    :value "aac123b39b42f8992f6f7b6fc96d79f4",
;    :version 0}}}

;; about sendt

(= (s/send-tpl {:api_user "XXXXXX"
                :api_key  "XXXXXX"}
               {:from                 "XXX@XXX.cn"
                :template_invoke_name "new_order_confirm"
                :substitution_vars    {:to ["somebody-email-address@qq.com"]
                                       :sub {:%user_name%   ["test_user"]
                                             :%total_price% [1123]}}})
   (s/sendt {:api_user "XXXXXX"
             :api_key  "XXXXXX"}
            "XXX@XXX.cn"
            "new_order_confirm"
            {:mail         ["somebody-email-address@qq.com"]
             :%user_name%  ["test_user"]
             :%total_price% [1123]}))
;=> true

License

Copyright © 2016 Michael Wong

Distributed under the Eclipse Public License .

About

A Clojure library designed to support Sendcloud API.

Resources

License

Stars

Watchers

Forks

Packages

No packages published