February 06, 2022 • Edit this file (Private, ask me for access if you wanna contribute)
Listar os últimos usuários que deram star em um repositório do GitHub
Com a API rest é impossível listar em order decrescente, portanto utilizaremos a GraphQL API do GitHub.
Tentei, tentei e falhei miseravelmente ao tentar fazer essa proeza
pela API Rest do GitHub
então restou a
GraphQL API
, e felizmente mais uma vez os grafos sairam
vencedores…
A Rest API do GitHub tem essa limitação: não é possível listar os últimos N usuários que deram star em um certo repositório. A paginação ocorre sempre do mais antigo pro mais recente, e não vice-versa.
Mas felizmente a API GraphQL deixa fazer isso sem dificuldade nenhuma:
query GetLastStargazers($owner: String!, $repo: String!, $first: Int) {
repository(name: $repo, owner: $owner) {
stargazers(first: $first, orderBy: {field: STARRED_AT, direction: DESC}) {
nodes {
name
login
}
totalCount
pageInfo {
hasNextPage
}
}
}
}
Agora, basta passar as variáveis $first
$owner
e $repo
para a requisição.
Importante: é possível puxar no máximo os últimos 100 usuários que deram star, caso precise de mais, aí não tem jeito, o correto é fazer paginação mesmo.
Se tentar puxar mais de 100, vai dar este erro:
{
"data": {
"repository": null
},
"errors": [
{
"type": "EXCESSIVE_PAGINATION",
"path": [
"repository",
"stargazers"
],
"locations": [
{
"line": 3,
"column": 5
}
],
"message": "Requesting 1000 records on the `stargazers` connection exceeds the `first` limit of 100 records."
}
]
}
See also
Files in the same folder:
- Donation - I accept donations from several platforms, this post serve as permalink to my documentation/credit pages for each project. These links allow supporters to easily find and donate to the projects they are interested in, while ensuring that all donations are properly credited and acknowledged.
- Creating a simple stargazing effect with p5.js - From a set of points, generate a stargazing effect.
- LeetCode, Two Sum problem solution using brute force in Dart - Two Sum LeetCode problem solution written in Dart in complexity O(N).
- Acho que esse é um dos maiores crimes que já cometi - Criei um blog estático em NodeJS com puro HTML e CSS misturado com React e JavaScript + Babel, API, database, regra de negócio tudo em 1 único arquivo com 700 linhas.
- Qual a maneira mais simples de evoluir a si mesmo? - Se você já se perguntou, 'Como posso ser melhor?' em qualquer aspecto. Essa dica é definitivamente para você!
- Mr. Fear - Medo de aprender, medo de perguntar, medo de errar, medo de falar em público, medo de altura, medo de cruzar aquele beco num sábado a noite no centro da zona leste. Essas 4 letras não tem espaço suficiente pra agrupar essa complexa quantidade de sentimentos.
- Botando React Redux de joelho no milho - Você ai já teve aquela fase em que ouvia a palavra 'redux' e sentava em posição fetal chorando? Então esse post é para você. Bora simplificar o estado global e implementar um gg 10/10 izi
Anonymous message
The form above is anonymous, although the following data is collected:
- Current page URL.
- Your message.
- Your username if provided.
- Don't forget to include contact info if you are asking something, otherwise I'll never be able to reach you back!
If you prefer, you can reach me directly on GitHub or E-mail.
This form is powered by Discord Webhook API, so it is totally hackable, enjoy.