From d2fc93ddf4a208f6557312fa71b2a8521ee9031b Mon Sep 17 00:00:00 2001 From: Victor Häggqvist Date: Mon, 30 Jun 2014 19:31:09 +0200 Subject: dist files --- dist/lastcommit.js | 113 +++++++++++++++++++++++++++++++++++++++++++++++++ dist/lastcommit.min.js | 4 ++ 2 files changed, 117 insertions(+) create mode 100644 dist/lastcommit.js create mode 100644 dist/lastcommit.min.js diff --git a/dist/lastcommit.js b/dist/lastcommit.js new file mode 100644 index 0000000..fa09a16 --- /dev/null +++ b/dist/lastcommit.js @@ -0,0 +1,113 @@ +/*! lastcommit - v0.1.0 - 2014-06-30 + * https://github.com/victorhaggqvist/lastcommit + * Copyright (c) 2014 Victor Häggqvist (http://victorhaggqvits.com); Licensed MIT */ +/** + * Widget that shows the last commit made in a users github repositories. + * + * Rewritten from https://github.com/johannilsson/lastcommit without jQuery + * + * By Victor Häggqvist (http://victorhaggqvist.com/) + * + * The MIT License (MIT) + * + * Copyright (c) 2014 Victor Häggqvist + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +(function(){ + + /** + * Wrapper function for widget, gets latest commit for user + * + * @param string user The user + * @param function callback Callback to be pased on to getCommitFromRepo + */ + function getLastCommit(user, callback) { + + if (!user) { console.error('Did not find username on lastcommit widget'); return;} + + var r = new XMLHttpRequest(); + r.open('GET', 'https://api.github.com/users/' + user + '/repos', true); + + r.onreadystatechange = function () { + if (r.readyState !== 4 || r.status !== 200) return; + + var respData = JSON.parse(r.responseText); + respData.sort(function(a, b) { // sort latest first + return Date.parse(b.pushed_at) - Date.parse(a.pushed_at); + }); + + // console.log("Success: " + respData[0].pushed_at); + getCommitFromRepo(user, respData[0], callback); + }; + r.send(); + } + + /** + * Gets the last commit by user in specityed repo + * + * @param string user The user + * @param object repo Repository object as found in https://developer.github.com/v3/repos/#list-your-repositories + * @param function callback Function to called on successfull retrival of commit + */ + function getCommitFromRepo(user, repo, callback) { + // console.log(repo); + var r = new XMLHttpRequest(); + r.open('GET', 'https://api.github.com/repos/' + user + '/' + repo.name + '/commits', true); + + r.onreadystatechange = function () { + if (r.readyState !== 4 || r.status !== 200) return; + + var respData = JSON.parse(r.responseText); + + // filter only user commits + var userCommits = respData.filter(function(a){ + if (a.committer.login === user) return true; + }); + + // console.log("Success: " + userCommits[0].commit.message); + callback(repo, userCommits[0].commit); + }; + r.send(); + } + + /** + * Render widget. + * + * @param element The element to render the widget to. + * @param data Data to populate the widget with. + */ + function renderWidget(element, data) { + var url = 'https://github.com/' + data.user + '/' + data.repo.name +'/commit/' + data.commit.sha, + html = ' ' + data.commit.message + ''; + element.innerHTML = html; + } + + var element = document.getElementsByClassName('lastcommit-widget')[0], + user = element.getAttribute('data-user'); + + getLastCommit(user, function (repo, commit) { + renderWidget(element, { + user: user, + repo: repo, + commit: commit + }); + }); + +})(); diff --git a/dist/lastcommit.min.js b/dist/lastcommit.min.js new file mode 100644 index 0000000..a043a6b --- /dev/null +++ b/dist/lastcommit.min.js @@ -0,0 +1,4 @@ +/*! lastcommit - v0.1.0 - 2014-06-30 + * https://github.com/victorhaggqvist/lastcommit + * Copyright (c) 2014 Victor Häggqvist (http://victorhaggqvits.com); Licensed MIT */ +!function(){function a(a,c){if(!a)return void console.error("Did not find username on lastcommit widget");var d=new XMLHttpRequest;d.open("GET","https://api.github.com/users/"+a+"/repos",!0),d.onreadystatechange=function(){if(4===d.readyState&&200===d.status){var e=JSON.parse(d.responseText);e.sort(function(a,b){return Date.parse(b.pushed_at)-Date.parse(a.pushed_at)}),b(a,e[0],c)}},d.send()}function b(a,b,c){var d=new XMLHttpRequest;d.open("GET","https://api.github.com/repos/"+a+"/"+b.name+"/commits",!0),d.onreadystatechange=function(){if(4===d.readyState&&200===d.status){var e=JSON.parse(d.responseText),f=e.filter(function(b){return b.committer.login===a?!0:void 0});c(b,f[0].commit)}},d.send()}function c(a,b){var c="https://github.com/"+b.user+"/"+b.repo.name+"/commit/"+b.commit.sha,d=' '+b.commit.message+"";a.innerHTML=d}var d=document.getElementsByClassName("lastcommit-widget")[0],e=d.getAttribute("data-user");a(e,function(a,b){c(d,{user:e,repo:a,commit:b})})}(); \ No newline at end of file -- cgit v1.2.3