Skip to content

Instantly share code, notes, and snippets.

@wilkes
Created April 15, 2010 20:10
Show Gist options
  • Save wilkes/367583 to your computer and use it in GitHub Desktop.
Save wilkes/367583 to your computer and use it in GitHub Desktop.
(ns github-clj
(:use clojure.contrib.json.read)
(:require [clojure.http.client :as http]))
;; List all repose GET repos/show/:user
(defn auth-info [login token]
(http/url-encode {"login" login "token" token}))
(def base-url "http://github.com/api/v2/json/")
(defn key-fn [s]
#(get % s))
(defn list-repos [auth user]
(let [[body] (:body-seq (http/request (str base-url "repos/show/" user "?" auth )))]
(get (read-json-string body) "repositories")))
;; POST repos/collaborators/:repo/remove/:user
(defn remove-collab [auth repo-name user]
(http/request (str base-url "repos/collaborators/" repo-name "/remove/" user)
"POST" nil nil auth) )
(defn remove-collab-from-all-projects [auth collab-user repo-owner]
(doseq [repo-name (map (key-fn "name") (list-repos auth repo-owner))]
(let [code (:code (remove-collab auth repo-name collab-user))]
(if (= 200 code)
(println "removed " collab-user " from " repo-name)
(throw (Exception. (str "Error removing " collab-user " from " repo-name)))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment