;;; 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