diff --git a/project.clj b/project.clj index 91e1ac1..0b76132 100644 --- a/project.clj +++ b/project.clj @@ -3,4 +3,5 @@ :url "http://example.com/FIXME" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} - :dependencies [[org.clojure/clojure "1.8.0"] [cheshire "5.6.3"]] ) + :dependencies [[org.clojure/clojure "1.8.0"] [cheshire "5.6.3"]] + :main hacktoboy.core) diff --git a/src/hacktoboy/core.clj b/src/hacktoboy/core.clj index 3585e28..cc5bd92 100644 --- a/src/hacktoboy/core.clj +++ b/src/hacktoboy/core.clj @@ -12,8 +12,30 @@ (let [s (user key)] (subs s 0 (- (.length s) (.length "{/privacy}"))))) -;;Get Url Events of Barista Public Members -(defn members-url-events [org-name] - (map (partial get-value "events_url") (parse->clojure (str base-url "/orgs/" org-name "/members")))) +(defn members-url-events + ([org-name] + "Get Url Events of Public Members for org-name" + (map (partial get-value "events_url") (parse->clojure (str base-url "/orgs/" org-name "/members")))) + ([org-name token] + "Get Url Events for all Member for org-ame. Requires token and be member" + (map (partial get-value "events_url") (parse->clojure (str base-url "/orgs/" org-name "/members?access_token=" token))))) -(members-url-events "BaristaVentures") +(defn count-user-pr [user-events] + "Count User Pull Request Events" + (reduce (fn [final-prs pr] + (let [{type "type" date "created_at" {name "name"} "repo" {login "login"} "actor"} pr] + (if (and (= type "PullRequestEvent") (.startsWith date "2016-10")) + (if (empty? final-prs) + {:user login :score 1 :last date} + (assoc final-prs :score (inc (:score final-prs)))) + final-prs))) + '() + user-events)) + +;;Get Members Score +(defn -main [& args] + (println "User - Score") + (apply println (map (fn [m] (str "\n" (:user m) " - " (:score m))) + (sort-by :score > (filter (fn [x] (> (count x) 0)) + (map count-user-pr + (map parse->clojure (apply members-url-events args))))))))