summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoni Rabkin <yonirabkin@member.fsf.org>2014-02-23 13:40:45 -0500
committerYoni Rabkin <yonirabkin@member.fsf.org>2014-02-23 13:40:45 -0500
commit246acd2c960c57a678640aaf5ce6993b72b2e67a (patch)
treedd9f2a2ee99492e7d4f5559bb6dc114ac539d9b7
parente7725492020d63faaca6fe4593afdb07cb664e42 (diff)
* rt-liberation.el: Attempt to handle server response when assigning.
-rw-r--r--rt-liberation.el20
1 files changed, 17 insertions, 3 deletions
diff --git a/rt-liberation.el b/rt-liberation.el
index 1ff4389..995a767 100644
--- a/rt-liberation.el
+++ b/rt-liberation.el
@@ -1202,14 +1202,28 @@ If FIELD already exists, update to VALUE."
(rt-liber-command-set-status
id (rt-liber-command-get-status-string 'open)))
+;; This is brittle because the server doesn't respond with a code but
+;; with some free text, and we have no guarantee that the text will be
+;; stable from version to version.
+(defun rt-liber-handle-response-set-owner (response)
+ "Handle the response from the RT server. Pass on the response."
+ (when
+ (with-temp-buffer
+ (insert response)
+ (goto-char (point-min))
+ (re-search-forward "That user does not exist" (point-max) t))
+ (error "that user does not exist"))
+ response)
+
(defun rt-liber-command-set-owner (id owner)
"Set the owner of ticket ID to OWNER."
(let ((command (rt-liber-command-get-command-string 'edit))
(args
(format "ticket/%s set owner=%s" id owner)))
- (rt-liber-parse-answer
- (rt-liber-command-runner command args)
- 'rt-liber-command-runner-parser-f)))
+ (rt-liber-handle-response-set-owner
+ (rt-liber-parse-answer
+ (rt-liber-command-runner command args)
+ 'rt-liber-command-runner-parser-f))))
(defun rt-liber-command-set-queue (id queue)
"Set the queue of ticket ID to QUEUE."