0

我正在制作一个可以从 Github 获取 source.zip / source.targz 的机器人,然后将其实施到我的应用程序中并应用新的更改,但我还没有找到下载版本的方法,因为我使用了 @Octokit/Rest 模块'm using only 获取版本。不下载。其他 npm 包对我不起作用,如果是这样,node_modules 文件夹会变得非常大,大约 19mb。当我执行 https GET 请求时,Github 要求我使用 USERAGENT,但我不知道如何将 Octokit 与纯 HTTPS 请求联系起来。

我希望能够通过代码下载版本,但我得到的是我将其绑定到的 zipfile 中的以下内容:

行政规则禁止的请求。请确保您的请求具有 User-Agent 标头 ( http://developer.github.com/v3/#user-agent-required )。检查https://developer.github.com以了解其他可能的原因。

    var file = fs.createWriteStream('bot.zip')
    var request = await https.get(releases[num].zipball_url, function(response) {
        response.pipe(file)
    })

//https://stackoverflow.com/questions/11944932/how-to-download-a-file-with-node-js-without-using-third-party-libraries
var octokit = new Octokit.Octokit({
        userAgent: 'Github Bot Updater',
        previews: ['jean-grey', 'symmetra'],
        baseUrl: 'https://api.github.com',
        log: {
            debug: () => {},
            info: () => {},
            warn: console.warn,
            error: console.error
          },
          request: {
            agent: undefined,
            fetch: undefined,
            timeout: 0
          }
    })
    var releases = await octokit.paginate("GET /repos/:owner/:repo/releases", {  owner: username,  repo: reponame})
//octokit has no method for downloading a release
4

1 回答 1

0

我所做的不是从发行版中获取 zipball,您还可以通过转到主 repo 页面,然后转到角落的分支按钮,转到标签和所需的发行标签来获得相同的东西。然后,单击该版本后,您可以下载该版本。当我调查那个时,而不是做

releases[num].zipball_url

    var request = await https.get(releases[num].zipball_url, function(response) {
        response.pipe(file)
    })

你可以做

https://codeload.github.com/${username}/${reponame}/zip/${releases[num].tag_name}

那行得通。

于 2020-03-07T02:53:53.650 回答