Skip to content

reshufflehq/reshuffle-github-connector

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

reshuffle-github-connector

Code | npm | Code sample

npm install reshuffle-github-connector

This connector uses the Octokit GitHub REST API package.

Reshuffle GitHub Connector

This package contains a Reshuffle connector to connect to GitHub.

The following example listens to all GitHub events on a repository:

const { Reshuffle } = require('reshuffle')
const { GitHubConnector } = require('reshuffle-github-connector')

const app = new Reshuffle()
const connector = new GitHubConnector(app, {
  token: process.env.TOKEN,
  runtimeBaseUrl: process.env.RUNTIME_BASE_URL
})

connector.on({ githubEvent: 'push' }, (event) => {
  console.log('GitHub Event: ', event)
})

app.start()

Table of Contents

Create GitHub API token

Configuration Options

Connector Events

Connector Actions

Create an API token from your GitHub account:

  1. Log in and go to https://github.com/settings/tokens.
  2. Click "Generate new token".
  3. Click Copy to clipboard, then paste the token to your script, or elsewhere to save

Configuration Options:

Provide options as below for connecting to GitHub:

const connector = new GitHubConnector(app, {
  token: process.env.TOKEN,
  runtimeBaseUrl: process.env.RUNTIME_BASE_URL
})

To use GitHub connector events, you need to provide at least your runtimeBaseUrl. You can also override the default webhookPath and webhookName.

interface GithubConnectorConfigOptions extends OctokitOptions {
  secret?: string
  webhookPath?: string
  runtimeBaseUrl?: string
  token?: string
}

// Full list of available options to connect to Octokit GitHub Rest API
type OctokitOptions = {
  authStrategy?: any
  auth?: any
  userAgent?: string
  previews?: string[]
  baseUrl?: string
  log?: {
    debug: (message: string) => unknown
    info: (message: string) => unknown
    warn: (message: string) => unknown
    error: (message: string) => unknown
  }
  request?: OctokitTypes.RequestRequestOptions
  timeZone?: string
  [option: string]: any
}

Connector events

listening to GitHub events

To listen to events happening in GitHub, pass the GitHub event type as options

interface GitHubConnectorEventOptions {
  owner: process.env.OWNER,
  repo: process.env.REPO,
  githubEvent: GithubEvent
}

// From: https://developer.github.com/webhooks/event-payloads/#webhook-event-payloads
type GithubEvent =
  | 'check_run'
  | 'check_suite'
  | 'commit_comment'
  | 'content_reference'
  | 'create'
  | 'delete'
  | 'deploy_key'
  | 'deployment'
  | 'deployment_status'
  | 'fork'
  | 'github_app_authorization'
  | 'gollum'
  | 'installation'
  | 'installation_repositories'
  | 'issue_comment'
  | 'issues'
  | 'label'
  | 'marketplace_purchase'
  | 'member'
  | 'membership'
  | 'meta'
  | 'milestone'
  | 'organization'
  | 'org_block'
  | 'package'
  | 'page_build'
  | 'ping'
  | 'project_card'
  | 'project_column'
  | 'project'
  | 'public'
  | 'pull_request'
  | 'pull_request_review'
  | 'pull_request_review_comment'
  | 'push'
  | 'release'
  | 'repository_dispatch'
  | 'repository'
  | 'repository_import'
  | 'repository_vulnerability_alert'
  | 'security_advisory'
  | 'sponsorship'
  | 'star'
  | 'status'
  | 'team'
  | 'team_add'
  | 'watch'
Examples of event listeners:
const app = new Reshuffle()
const connector = new GitHubConnector(app, {
  token: process.env.TOKEN,
  runtimeBaseUrl: process.env.RUNTIME_BASE_URL
})

connector.on({ 
    owner: process.env.OWNER,
    repo: process.env.REPO,
    githubEvent: 'issues' 
  }, async (event, app) => {
  console.log(event)
})

connector.on({ 
    owner: process.env.OWNER,
    repo: process.env.REPO,
    githubEvent: 'fork' 
  }, async (event, app) => {
  console.log(event)
})

Connector actions

All actions are provided via the sdk. // See full list of actions with documentation Octokit GitHub Rest.js Documentation

Few examples:

  • Get the issues for a repository
const repoIssues = await connector.sdk().issues.get({
  owner,
  repo,
  issue_number,
})
  • Create a pull request
const pullRequest = await connector.sdk().pulls.create({
  owner,
  repo,
  title,
  head,
  base,
})
  • Follow another user:
const user = await connector.sdk().users.follow({
  username,
})
sdk

Full access to the Octokit GitHub Rest Client

const sdk = await connector.sdk()

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published