@cekeh/github-repos

1.1.0 • Public • Published

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
    },
    /* ... */
  ]
}

Readme

Keywords

none

Package Sidebar

Install

npm i @cekeh/github-repos

Weekly Downloads

4

Version

1.1.0

License

MIT

Unpacked Size

14.3 kB

Total Files

4

Last publish

Collaborators

  • cekeh