summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.emacs.d/site-lisp/pivot.el70
1 files changed, 70 insertions, 0 deletions
diff --git a/.emacs.d/site-lisp/pivot.el b/.emacs.d/site-lisp/pivot.el
new file mode 100644
index 0000000..63830ab
--- /dev/null
+++ b/.emacs.d/site-lisp/pivot.el
@@ -0,0 +1,70 @@
+;;; pivot.el --- Elisp library for the Pivotal Tracker API -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2014 Tom Willemse
+
+;; Author: Tom Willemse <tom@ryuslash.org>
+;; Keywords: comm, hypermedia
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(require 'url)
+
+(defgroup pivotel nil
+ "Communicate with Pivotal Tracker."
+ :group 'external)
+
+(defcustom pivotel-api-token nil
+ "API token from Pivotal Tracker.
+
+From Pivotal Tracker: Your token enables access to your project
+and story data via the API, and needs to be kept private."
+ :group 'pivotel)
+
+(defvar pivotel-api-url
+ "https://www.pivotaltracker.com/services/v5"
+ "Base URL of the Pivotal Tracker API.
+
+Does not need a final `/'.")
+
+(defun pivotel-get-story (project story)
+ "Get data from PROJECT for STORY."
+ (let ((url-request-extra-headers
+ `(("X-TrackerToken" . ,pivotel-api-token))))
+ (with-current-buffer
+ (url-retrieve-synchronously
+ (format "%s/projects/%d/stories/%d"
+ pivotel-api-url project story))
+ (goto-char (point-min))
+ (search-forward "\n\n")
+ (json-read))))
+
+(defun pivotel-get-projects ()
+ "Get a list of all projects."
+ (let ((url-request-extra-headers
+ `(("X-TrackerTocken" . ,pivotel-api-token))))
+ (with-current-buffer
+ (url-retrieve-synchronously
+ (format "%s/projects" pivotel-api-url))
+ (goto-char (point-min))
+ (search-forward "\n\n")
+ (json-read))))
+
+(provide 'pivot)
+;;; pivot.el ends here