【问题标题】:C++ - Get latest release of a GitHub projectC++ - 获取 GitHub 项目的最新版本
【发布时间】:2018-05-26 06:56:12
【问题描述】:

我有一个程序使用存储在 GitHub 项目中的一组文件。

我想查看该 GitHub 项目的最新发布版本,如果它比本地版本更新,请下载这些文件。

有谁知道如何检查发布版本并从(使用 QT C++)下载?

我的程序是在 Qt 5 中完成的 (https://github.com/bq/QssWeb2Board)

【问题讨论】:

  • 那么您想从您的 C++ 程序中启动一个 git 命令吗?然后你可能想要使用一个库,例如 libgit2 (libgit2.github.com)。您也可以使用QProcess 调用已安装的 git 可执行文件,但是您必须处理各种输出解析。
  • @pschill 我在考虑使用 GitHub API
  • 使用 GitHub API 时,您需要将命令构建为 http 请求并处理结果。你不认为使用一个唯一目的是解决你所遇到的确切问题的库更容易吗?
  • @pschill 是的。那是一个很棒的图书馆。这似乎对我的目标很重要。但我会试一试。谢谢指出!

标签: c++ qt github-api


【解决方案1】:

检查注释库并进行一些挖掘,我找到了答案。这里是主要代码。谢谢。

QUrl url("https://api.github.com/repos/" + owner +"/" + project + "/tags");
qInfo() << url.toString();
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QNetworkAccessManager nam;
QNetworkReply * reply = nam.get(request);

timeout=false;
timer->start(5000);

while(!timeout){
    qApp->processEvents();
    if(reply->isFinished()) break;
}

if(reply->isFinished()){
    QByteArray response_data = reply->readAll();
    QJsonDocument json = QJsonDocument::fromJson(response_data);
    return json[0]["name"].toString();
}else{
    return QString("Timeout");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-29
    • 2015-06-14
    • 2023-03-30
    • 1970-01-01
    • 2014-02-13
    • 2016-06-30
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多