Octokit GitHub API

Я хотел бы получить количество запросов на получение и проблем для конкретного представителя GitHub. На данный момент метод, который я использую, действительно неуклюж.

Используя гем octokit и следующий код:

# Builds data that is sent to the API
def request_params
  data = { }

  # labels example: "bug,invalid,question"
  data["labels"] = labels.present? ? labels : ""

  # filter example: "assigned" "created" "mentioned" "subscribed" "all"
  data["filter"] = filter

  # state example: "open" "closed" "all"
  data["state"] = state

  return data
end


Octokit.auto_paginate = true
github = Octokit::Client.new(access_token: oauth_token)
github.list_issues("#{user}/#{repository}", request_params).count

Полученные данные чрезвычайно велики, поэтому они очень неэффективны с точки зрения памяти. Мне не нужны данные о проблемах, только их количество, X проблем (на основе фильтров / состояния / меток).

Я думал о решении, но не смог его реализовать. В основном: сделайте 1 запрос на получение заголовка, в заголовке должна быть ссылка на последнюю страницу. Затем сделайте еще 1 запрос на последнюю страницу и проверьте, сколько существует проблем. Тогда мы можем рассчитать:

count = ( number of pages * (issues-per-page - 1) ) + issues-on-last-page

Но я не выяснил, как получить информацию заголовка запроса от octokit Authentificated Client. Если есть простой способ сделать это без октокита, я с радостью воспользуюсь им.

Примечание: я хочу исправить эту проблему, потому что число запросов на извлечение достаточно велико, и код выше генерирует ошибки R14 на Heroku.

Благодарю вас!

1 ответ

Решение

Я считаю, что проще всего использовать API GitHub и ограничить количество PR, которые вы хотите отображать на странице, используя фильтр per_page. Например: чтобы узнать все PR репозитория OneGet/oneget, который вы можете использовать. https://api.github.com/search/issues?q=repo:OneGet/oneget+type:pr&per_page=1, Ответ JSON имеет поле "total_count", в котором указано общее количество PR. И ответ будет относительно легким, поскольку в нем будет указана только одна проблема. Ссылка: вопросы поиска

Другие вопросы по тегам