j0k3r / banditore

Banditore retrieves new releases from your starred GitHub repositories and generate an Atom feed with them.
https://bandito.re
MIT License
129 stars 5 forks source link

Jump to GraphQL to save some requests? #2

Open j0k3r opened 7 years ago

j0k3r commented 7 years ago

Request to retrieve all information from tag & release for a given repository.

This one only use releases:

{
  repository(owner: "j0k3r", name: "graby") {
    tags: refs(refPrefix: "refs/tags/", first: 5, direction: DESC) {
      edges {
        tag: node {
          name
          target {
            ... on Tag {
              sha: oid
              message
              tagger {
                name
                date
              }
            }
          }
        }
      }
    }
    releases(last: 5) {
      nodes {
        id
        name
        description
        publishedAt
        tag {
          name
        }
      }
    }
  }
}

This one only use tags:

{
  repository(owner: "rails", name: "rails") {
    tags: refs(refPrefix: "refs/tags/", first: 5, direction: DESC) {
      edges {
        tag: node {
          name
          target {
            ... on Commit {
              message
              author {
                name
                date
              }
            }
            ... on Tag {
              message
              tagger {
                name
                date
              }
            }
          }
        }
      }
    }
    releases(last: 5) {
      nodes {
        id
        name
        description
        publishedAt
        tag {
          name
        }
      }
    }
  }
}

Request to retrieve starred repositories & all information

First page:

{
  user(login: "j0k3r") {
    starredRepositories(first: 50, orderBy: {field: STARRED_AT, direction: ASC}) {
      pageInfo {
        hasNextPage
        hasPreviousPage
        endCursor
      }
      edges {
        node {
          id
          name
          description
          owner {
            login
            avatarURL
          }
        }
      }
    }
  }
}

The second one (using the endCursor as after parameter and until hasNextPage is false):

{
  user(login: "j0k3r") {
    starredRepositories(first: 50, orderBy: {field: STARRED_AT, direction: ASC}, after: "Y3Vyc29yOjIwMTItMDEtMDRUMTE6MjA6NDgrMDE6MDA=") {
      pageInfo {
        hasNextPage
        hasPreviousPage
        endCursor
      }
      edges {
        node {
          id
          name
          description
          owner {
            login
            avatarURL
          }
        }
      }
    }
  }
}
j0k3r commented 7 years ago

Rate limit on GraphQL is limited to 200 calls per hour :disappointed: