Octokit возвращает один пулл-запрос, а не все вопросы - PullRequest
0 голосов
/ 22 мая 2018

Я хочу получить все проблемы из репозитория GitHub в моем приложении Node.js.Я использовал octokit для этого.Из документации, которую я собираю, я должен использовать repo.getIssueEvents(), но это просто возвращает 1-й запрос на получение, что не соответствует ожиданиям.

Я пробовал поискать в Google, но продолжаю сталкиваться с той же документацией, что и яиспользуемый.Что я делаю не так?

Вот мой код:

var GitHubApi = require('octokit');
retrieveIssues: function(owner, repoName) {

  var gh = GitHubApi.new({  
  username: "user",
  password: "password"
  });


  var repo = gh.getRepo(owner, repoName);

  repo.getIssueEvents()
    .then(function(events) {console.log(events)})

}

1 Ответ

0 голосов
/ 23 мая 2018

Если вы ссылаетесь на этот проект octokit , кажется, что он не предоставляет Github API проблемы получения , а только события проблемы для определенного репозитория.

Здесь , Github рекомендует использовать octokit / rest для

npm install @octokit/rest

Чтобы получить все вопросы (выдает и выдает запрос во всех штатах) это будет:

const octokit = require('@octokit/rest')()

async function paginate(method) {
    let response = await method({
        owner: "google",
        repo: "gson",
        state: "all",
        per_page: 100
    })
    let {
        data
    } = response
    var count = 0;
    while (octokit.hasNextPage(response)) {
        count++;
        console.log(`${count} request`);
        response = await octokit.getNextPage(response)
        data = data.concat(response.data)
    }
    return data
}

paginate(octokit.issues.getForRepo)
    .then(data => {
        console.log(data);
    })

Проверьте Issues.getForRepo

Если вы не хотите вытащить запросы, а только проблемы, которые вы могли бытакже выполните поисковый запрос следующим образом:

const octokit = require('@octokit/rest')()

octokit.authenticate({
    type: 'oauth',
    token: 'YOUR_TOKEN'
});

async function paginate(method) {
    let response = await method({
        q: "repo:google/gson is:issue",
        per_page: 100
    })
    let data = response.data.items;
    var count = 0;
    while (octokit.hasNextPage(response)) {
        count++;
        console.log(`request n°${count}`);
        response = await octokit.getNextPage(response);
        data = data.concat(response.data.items);
    }
    return data
}

paginate(octokit.search.issues)
    .then(data => {
        console.log(data);
        console.log(`retrieved ${data.length} issues`);
    })

Но обратите внимание, что только первые 1000 проблем возвращаются в поисковых запросах

...