summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemse2014-08-20 23:51:13 +0200
committerGravatar Tom Willemse2014-08-20 23:51:13 +0200
commitac1a7d8e8994f83dd829159be36334207a02d00c (patch)
treed6047c19eac54bf6c775c414dece437982c3504a
parentb792a4957c372600484d6471d16475f7a7dea1d7 (diff)
downloademacs-ac1a7d8e8994f83dd829159be36334207a02d00c.tar.gz
emacs-ac1a7d8e8994f83dd829159be36334207a02d00c.zip
Add experimental pivotal tracker function(s)
-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