aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Häggqvist <[email protected]>2014-06-30 19:31:09 +0200
committerVictor Häggqvist <[email protected]>2014-06-30 19:31:09 +0200
commitd2fc93ddf4a208f6557312fa71b2a8521ee9031b (patch)
tree9acb08371028311fa728bdfa5c5198363def6a10
parentdfdabbba0163b7796d7f7e9fecfdf216d0ef97cf (diff)
dist files
-rw-r--r--dist/lastcommit.js113
-rw-r--r--dist/lastcommit.min.js4
2 files changed, 117 insertions, 0 deletions
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 = '<a href="' + url +'"> ' + data.commit.message + '</a>';
+ 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='<a href="'+c+'"> '+b.commit.message+"</a>";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