1.1.0 • Published 3 years ago

@cekeh/github-repos v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

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