summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoni Rabkin <yoni@rabkins.net>2020-11-16 17:22:01 -0500
committerYoni Rabkin <yoni@rabkins.net>2020-11-16 17:22:01 -0500
commit4097a1cb4131e97fa13c62f7c8704358d2215395 (patch)
tree7da4bd89a605cc9c3ff9e10d25d17df75597dee4
parenta9786cf58f20bb6eef95160ec807e171113da16f (diff)
* rt-liberation-rest.el: new function rt-liber-rest-auth
This function checks for the REST credentials and if they are not there it tries to grab them from auth-source.
-rw-r--r--rt-liberation-rest.el29
1 files changed, 22 insertions, 7 deletions
diff --git a/rt-liberation-rest.el b/rt-liberation-rest.el
index 99f6ce9..6e3409d 100644
--- a/rt-liberation-rest.el
+++ b/rt-liberation-rest.el
@@ -45,10 +45,10 @@
(defvar rt-liber-rest-url ""
"URL of RT installation.")
-(defvar rt-liber-rest-username ""
+(defvar rt-liber-rest-username nil
"Username of RT account.")
-(defvar rt-liber-rest-password ""
+(defvar rt-liber-rest-password nil
"Password of RT account.")
(defvar rt-liber-rest-verbose-p t
@@ -65,6 +65,19 @@
(goto-char (point-max))
(insert str))))
+(defun rt-liber-rest-auth ()
+ "Try to get the REST credentials."
+ (if (and (stringp rt-liber-rest-username)
+ (stringp rt-liber-rest-password))
+ t
+ (message "rt-liber: no REST credentials set, so attempting auth-source")
+ (let ((auth-source-found-p
+ (auth-source-search :host "rt-liberation" :require '(:user :secret) :create nil)))
+ (when (not auth-source-found-p)
+ (error "no auth-source found for login"))
+ (setq rt-liber-rest-password (funcall (plist-get (nth 0 auth-source-found-p) :secret))
+ rt-liber-rest-username (plist-get (nth 0 auth-source-found-p) :user)))))
+
(defun rt-liber-rest-search-string (scheme url username password query)
"Return the search query string."
(let ((user (url-encode-url username))
@@ -124,11 +137,11 @@
str)
(setq str
(decode-coding-string
- (with-current-buffer response
- (buffer-substring-no-properties (point-min)
- (point-max)))
- 'utf-8))
-
+ (with-current-buffer response
+ (buffer-substring-no-properties (point-min)
+ (point-max)))
+ 'utf-8))
+
(rt-liber-rest-write-debug
(format "outgoing rest call -->\n%s\n<-- incoming\n%s\n" url str))
str)))
@@ -138,6 +151,7 @@
(when (or (not (stringp op))
(not (stringp query-string)))
(error "bad arguments"))
+ (rt-liber-rest-auth)
(cond ((string= op "ls")
(rt-liber-rest-call
(rt-liber-rest-search-string rt-liber-rest-scheme
@@ -215,6 +229,7 @@
"Run edit comment to set FIELD to VALUE."
(message "started edit command at %s..." (current-time-string))
(message "ticket #%s, %s <- %s" ticket-id field value)
+ (rt-liber-rest-auth)
(let ((request-data
(format "content=%s: %s"
(url-hexify-string field)