From ac1a7d8e8994f83dd829159be36334207a02d00c Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Wed, 20 Aug 2014 23:51:13 +0200 Subject: Add experimental pivotal tracker function(s) --- .emacs.d/site-lisp/pivot.el | 70 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 .emacs.d/site-lisp/pivot.el 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 +;; 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 . + +;;; 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 -- cgit v1.2.3-54-g00ecf