解析有关最新GitHub提交的信息

时间:2013-06-20 13:52:05

标签: javascript html web github

我一直在尝试使用Javascript检索有关特定仓库的最新提交的信息,但没有太多结果。 我一直在使用XMLHttpRequest从repo的提交页面获取数据(例如:https://api.github.com/repos/trapped/rotmg_svr/commits),但似乎它返回null。 此外,我尝试使用正则表达式来获取特定行值的第一个匹配项(例如,为了获取提交描述的值,我使用了这个:"message": "(.*)",),使其遍历所有行,直到它找到了一些东西(在我发布的代码中,我暂时将其更改为行号,试图加快流程,因为它不起作用)。 此外,在尝试加载页面时,它会阻止。正如我以前使用C#的webclient建议的那样,它可能与XMLHttpRequest事件有关(事实上,当我尝试调试它时返回一个未定义的对象)。

提前感谢所有帮助。

var messagelineindex = 14;
var linklineindex = 17;
var response = "";

function loadcommits() {
    httpGet("https://api.github.com/repos/trapped/rotmg_svr/commits");
    var lines = response.split("\n");
    var message = parsemessage(lines[messagelineindex]);
    var link = parselink(lines[linklineindex]);
    addcommit(/<a href="/+link+/">/+message+"</a>");
    //for (var i = 0; i < numlines; i++) {
    //    var line = lines[i];
    //    var commitmessage = parsemessage(line);
    //    if (commitmessage != "") {
    //        addcommit(commitmessage);
    //        break;
    //    }
    //}
}

function parselink(text) {
    var regex = /"link": "(.*)",/;
    var match = regex.exec(text);
    if (!match) {
        return "";
    }
    else {
        return match[1];
    }
}

function parsemessage(text) {
    var regex = /"message": "(.*)",/;
    var match = regex.exec(text);
    if (!match) {
        return "";
    }
    else {
        return match[1];
    }
}

function addcommit(text) {
    document.getElementById("commits").innerHTML = document.getElementById("commits").innerHTML + text.toString() + "\n\r";
}

function httpGet(theUrl) {
    var xmlHttp = null;

    xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            response = xmlHttp.responseText;
        }
    }
    xmlHttp.open("GET", theUrl, false);
    xmlHttp.send(null);
}

0 个答案:

没有答案