diff options
author | Pedro Silva <psilva+git@pedrosilva.pt> | 2013-04-02 11:56:33 +0100 |
---|---|---|
committer | Pedro Silva <psilva+git@pedrosilva.pt> | 2013-04-02 11:56:33 +0100 |
commit | ea0ae945fa4168e01669973e1cb31c2834db9377 (patch) | |
tree | 6c78be18c78f7387ee0ab0309e9b5df589f310dd | |
parent | 7f6b9f06aa546b3f1391c6b024708f26f2234316 (diff) |
Implement helper function for POSTING plists as JSON
Returns JSON response content as a plist
-rw-r--r-- | nnttrss.el | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -20,6 +20,27 @@ (defvar nnttrss-session-id nil "Current session id, if any, set after successful login.") + + +(defun nnttrss-post-request (content address) + "POST CONTENT to ADDRESS as urlencoded form data. CONTENT must +be a data structure that `json-encode' knows how to encode as a +JSON object. Returns the JSON response as a plist or nil." + (let ((url-request-method "POST") + (url-request-data (json-encode content)) + (json-object-type 'plist) + (json-false nil)) + (with-current-buffer (url-retrieve-synchronously address) + (goto-char (point-min)) + (search-forward-regexp "\n\n") + (let* ((response (json-read)) + (status (plist-get response :status)) + (content (plist-get response :content))) + (if (= status 0) content + (nnheader-report 'nnttrss (plist-get content :error))))))) + + + (gnus-declare-backend "nnttrss" 'address 'prompt-address) (provide 'nnttrss) |