diff options
| author | Teddy Wing | 2022-05-08 06:19:10 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2022-05-08 06:19:10 +0200 | 
| commit | 27a205d81647c9df3c6c04f36062b87987d5ae99 (patch) | |
| tree | 429152d5559ec9b398bca32f553dee14e8e44f0b | |
| parent | 22461379250147870550d4d9cd43dc67f65892a9 (diff) | |
| download | wajir-27a205d81647c9df3c6c04f36062b87987d5ae99.tar.bz2 | |
Format 'issue created' email
Include a selection of metadata values in the email.
I needed to pass `config` to `deliver-email` in order to be able to
build a URL to the ticket based on the `endpoint` field.
Also needed to make the field list a vector instead of a list, otherwise
'jzon' interpreted it as being a plist and serialized it to a JSON
object.
| -rw-r--r-- | src/email.lisp | 29 | ||||
| -rw-r--r-- | src/main.lisp | 17 | 
2 files changed, 32 insertions, 14 deletions
| diff --git a/src/email.lisp b/src/email.lisp index c877eda..9e5929c 100644 --- a/src/email.lisp +++ b/src/email.lisp @@ -1,12 +1,12 @@  (in-package :wajir) -(defun deliver-email (recipient issue) +(defun deliver-email (config issue)    (cl-smtp:write-rfc8822-message      *standard-output*      (format nil "wajir@~A" (uiop:hostname)) -    `(,recipient) +    `(,(email-to config))      (format-subject issue) -    (format-description issue))) +    (format-body issue (endpoint config))))  (defun format-subject (issue)    (format nil @@ -15,6 +15,23 @@            (gethash "summary"                     (gethash "fields" issue)))) -(defun format-description (issue) -  (gethash "description" -           (gethash "fields" issue))) +(defun format-body (issue endpoint) +  (let ((fields (gethash "fields" issue))) +    (format nil +            "~A created ~A:~%~%Summary: ~A~%Key: ~A~%URL: ~A~%Project: ~A~%Issue Type: ~A~%Reporter: ~A~%~%~%~A" +            (gethash "displayName" +                     (gethash "creator" fields)) +            (gethash "key" issue) +            (gethash "summary" fields) +            (gethash "key" issue) +            (format nil +                    "https://~A/browse/~A" +                    endpoint +                    (gethash "key" issue)) +            (gethash "name" +                     (gethash "project" fields)) +            (gethash "name" +                     (gethash "issuetype" fields)) +            (gethash "displayName" +                     (gethash "reporter" fields)) +            (gethash "description" fields)))) diff --git a/src/main.lisp b/src/main.lisp index e48cf34..7c0f368 100644 --- a/src/main.lisp +++ b/src/main.lisp @@ -66,13 +66,14 @@                :content                (jzon:stringify                  `((:jql . ,jql) -                  (:fields . ("id" -                              "key" -                              "project" -                              "summary" -                              "description" -                              "issuetype" -                              "reporter")) +                  (:fields . #("id" +                               "key" +                               "project" +                               "summary" +                               "description" +                               "issuetype" +                               "creator" +                               "reporter"))                    (:|startAt| . ,start-at)))                :headers `((:content-type . "application/json")                           (:authorization @@ -83,4 +84,4 @@    ;; 2. Send email    (format t "Watching issue ~A~%" (gethash "key" issue)) -  (deliver-email (email-to config) issue)) +  (deliver-email config issue)) | 
