Skip to content

Express middleware to grab repository information from GitHubs REST API

License

Notifications You must be signed in to change notification settings

ThomasvanBommel/github-repos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

github-repos

Express middleware to grab repository information from GitHubs REST API.

Uses GitHub API to pull repositories sorted and orders in a specified way.

JDoc

/**
 * Grab GitHub repositories
 * @param {Object} options - GitHubRepos options
 * @param {string} options.user - GitHub username (User Agent)
 * @param {string} options.token - GitHub API access token
 * @param {string} [options.sort="updated"] - How to sort repositories
 *  one of (interactions, reactions, author-date, committer-date, updated)
 * @param {string} [options.order="desc"] - How to order repositories
 * @param {integer} [options.interval=3600000] - Update interval (default 1h)
 * @throws Missing options.user...
 * @throws Missing options.token...
 */

Usage

const GitHub = require("@cekeh/github-repos");
const express = require("express");

let app = express();

app.use(GitHub({
  user: "ThomasvanBommel",
  token: "authentication-token"
}));

app.get("*", (req, res) => {
  console.log(req.github);
});

app.listen(8000);

Example Output

{
  profile: {
    login: 'ThomasvanBommel',
    id: 39364535,
    node_id: 'MDQ6VXNlcjM5MzY0NTM1',
    avatar_url: 'https://avatars3.githubusercontent.com/u/39364535?v=4',
    gravatar_id: '',
    url: 'https://api.github.com/users/ThomasvanBommel',
    html_url: 'https://github.com/ThomasvanBommel',
    followers_url: 'https://api.github.com/users/ThomasvanBommel/followers',
    following_url: 'https://api.github.com/users/ThomasvanBommel/following{/other_user}',
    gists_url: 'https://api.github.com/users/ThomasvanBommel/gists{/gist_id}',
    starred_url: 'https://api.github.com/users/ThomasvanBommel/starred{/owner}{/repo}',
    subscriptions_url: 'https://api.github.com/users/ThomasvanBommel/subscriptions',
    organizations_url: 'https://api.github.com/users/ThomasvanBommel/orgs',
    repos_url: 'https://api.github.com/users/ThomasvanBommel/repos',
    events_url: 'https://api.github.com/users/ThomasvanBommel/events{/privacy}',
    received_events_url: 'https://api.github.com/users/ThomasvanBommel/received_events',
    type: 'User',
    site_admin: false,
    name: null,
    company: null,
    blog: 'https://cekeh.com',
    location: 'Nova Scotia',
    email: null,
    hireable: true,
    bio: null,
    twitter_username: 'cekeh_',
    public_repos: 21,
    public_gists: 0,
    followers: 0,
    following: 0,
    created_at: '2018-05-17T06:29:16Z',
    updated_at: '2020-12-29T20:37:09Z'
  },
  repos: [
    {
      id: 321590382,
      node_id: 'MDEwOlJlcG9zaXRvcnkzMjE1OTAzODI=',
      name: 'transport-layer-security',
      full_name: 'ThomasvanBommel/transport-layer-security',
      private: false,
      owner: [Object],
      html_url: 'https://github.com/ThomasvanBommel/transport-layer-security',
      description: 'This is a JavaScript module created for use with NodeJS that loads TLS certificates from the filesystem for use with the https module. This module will also generate self signed certificates for "localhost" when no certificates are found in the prescribes location. (uses openssl from the command line)',
      fork: false,
      url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security',
      forks_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/forks',
      keys_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/keys{/key_id}',
      collaborators_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/collaborators{/collaborator}',
      teams_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/teams',
      hooks_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/hooks',
      issue_events_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/issues/events{/number}',
      events_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/events',
      assignees_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/assignees{/user}',
      branches_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/branches{/branch}',
      tags_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/tags',
      blobs_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/git/blobs{/sha}',
      git_tags_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/git/tags{/sha}',
      git_refs_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/git/refs{/sha}',
      trees_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/git/trees{/sha}',
      statuses_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/statuses/{sha}',
      languages_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/languages',
      stargazers_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/stargazers',
      contributors_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/contributors',
      subscribers_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/subscribers',
      subscription_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/subscription',
      commits_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/commits{/sha}',
      git_commits_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/git/commits{/sha}',
      comments_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/comments{/number}',
      issue_comment_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/issues/comments{/number}',
      contents_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/contents/{+path}',
      compare_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/compare/{base}...{head}',
      merges_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/merges',
      archive_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/{archive_format}{/ref}',
      downloads_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/downloads',
      issues_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/issues{/number}',
      pulls_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/pulls{/number}',
      milestones_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/milestones{/number}',
      notifications_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/notifications{?since,all,participating}',
      labels_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/labels{/name}',
      releases_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/releases{/id}',
      deployments_url: 'https://api.github.com/repos/ThomasvanBommel/transport-layer-security/deployments',
      created_at: '2020-12-15T07:43:23Z',
      updated_at: '2020-12-29T21:42:16Z',
      pushed_at: '2020-12-29T21:42:14Z',
      git_url: 'git://github.com/ThomasvanBommel/transport-layer-security.git',
      ssh_url: 'git@github.com:ThomasvanBommel/transport-layer-security.git',
      clone_url: 'https://github.com/ThomasvanBommel/transport-layer-security.git',
      svn_url: 'https://github.com/ThomasvanBommel/transport-layer-security',
      homepage: null,
      size: 4,
      stargazers_count: 0,
      watchers_count: 0,
      language: 'JavaScript',
      has_issues: true,
      has_projects: true,
      has_downloads: true,
      has_wiki: true,
      has_pages: false,
      forks_count: 0,
      mirror_url: null,
      archived: false,
      disabled: false,
      open_issues_count: 0,
      license: [Object],
      forks: 0,
      open_issues: 0,
      watchers: 0,
      default_branch: 'main',
      permissions: [Object],
      type: 'github',
      date: 2020-12-29T21:42:16.000Z
    },
    /* ... */
  ]
}

About

Express middleware to grab repository information from GitHubs REST API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published