diff --git a/worker/src/models/pipeline.ts b/worker/src/models/pipeline.ts index ee5857d..6b74b45 100644 --- a/worker/src/models/pipeline.ts +++ b/worker/src/models/pipeline.ts @@ -8,35 +8,17 @@ export enum ServiceType { Utils, }; - export enum PipelineType { // Special value that will never emit an action. It is used for deleted pipelines. Never, - OnTweet, OnYtUpload, OnYtLike, OnYtPlaylistAdd, - OnOpenPR, - OnCommentPR, - OnClosePR, - OnMergePR, - OnCreateIssue, - OnCommentIssue, - OnCloseIssue, - OnForkRepo, - OnStarRepo, - OnWatchRepo, OnSpotifyAddToPlaylist, OnSpotifySaveToLibrary, - OnDiscordMessage, - OnDiscordMessageFrom, - OnDiscordMention, - OnNewDiscordGuildMember, - OnDiscordGuildLeave, - OnTrigger, }; diff --git a/worker/src/services/github.ts b/worker/src/services/github.ts index d5518ba..d0405e3 100644 --- a/worker/src/services/github.ts +++ b/worker/src/services/github.ts @@ -1,5 +1,4 @@ import { Octokit } from "@octokit/rest"; -import { createOAuthAppAuth, createOAuthUserAuth } from "@octokit/auth-oauth-app" import { Pipeline, PipelineEnv, PipelineType, ReactionType, ServiceType } from "../models/pipeline"; import { action, BaseService, reaction, service } from "../models/base-service"; import { Webhooks, EmitterWebhookEventName } from "@octokit/webhooks"; @@ -16,24 +15,6 @@ export class Github extends BaseService { if (!("Github" in pipeline.userData)) throw new Error("User not authenticated via github"); this._github = new Octokit({auth: pipeline.userData["Github"].accessToken}); - console.log(process.env); - this._websocket = new Webhooks({ - secret: process.env.GITHUB_SECRET - }); - } - - private fromGitHubEvent( - eventName: EmitterWebhookEventName, - filterMe: (_: any) => boolean, - mapMe: (_: any) => any - ): Observable { - return fromEventPattern( - (h) => this._websocket.on(eventName, h), - (h) => this._websocket.removeListener(eventName, h) - ).pipe( - filter(({ _, __, payload }) => filterMe.call(payload)), - map(({ _, __, payload }) => mapMe(payload)), - ); } @reaction(ReactionType.OpenPR, ['owner', 'repo', 'title', 'head', 'base']) @@ -47,24 +28,6 @@ export class Github extends BaseService { }; } - @action(PipelineType.OnOpenPR, ['owner', 'repo']) - listenOpenPR(params: any): Observable { - return this.fromGitHubEvent( - "pull_request.opened", - (payload) => payload.repository.owner.login == params['owner'] - && payload.repository.name == params['repo'], - (payload) => ({ - PR_NAME: payload.pull_request.title, - PR_BODY: payload.pull_request.body, - PR_OPENER: payload.sender.login, - PR_HEAD: payload.head.ref, - PR_BASE: payload.base.ref, - REPO_NAME: payload.repository.name, - REPO_OWNER: payload.repository.owner.login - }) - ); - } - @reaction(ReactionType.ClosePR, ['owner', 'repo', 'pull_number']) async closePR(params: any): Promise { await this._github.pulls.update({ @@ -74,25 +37,6 @@ export class Github extends BaseService { return {}; } - @action(PipelineType.OnClosePR, ['owner', 'repo']) - listenClosePR(params: any): Observable { - return this.fromGitHubEvent( - "pull_request.closed", - (payload) => payload.repository.owner.login == params['owner'] - && payload.repository.name == params['repo'] - && payload.action == "closed" && payload.pull_request.merged == false, - (payload) => ({ - PR_NAME: payload.pull_request.title, - PR_BODY: payload.pull_request.body, - PR_OPENER: payload.sender.login, - PR_HEAD: payload.head.ref, - PR_BASE: payload.base.ref, - REPO_NAME: payload.repository.name, - REPO_OWNER: payload.repository.owner.login - }) - ); - } - @reaction(ReactionType.MergePR, ['owner', 'repo', 'pull_number']) async mergePR(params: any): Promise { await this._github.pulls.merge({ @@ -102,25 +46,6 @@ export class Github extends BaseService { return {}; } - @action(PipelineType.OnMergePR, ['owner', 'repo']) - listenMergePR(params: any): Observable { - return this.fromGitHubEvent( - "pull_request.edited", - (payload) => payload.repository.owner.login == params['owner'] - && payload.repository.name == params['repo'] - && payload.action == "closed" && payload.pull_request.merged, - (payload) => ({ - PR_NAME: payload.pull_request.title, - PR_BODY: payload.pull_request.body, - PR_OPENER: payload.sender.login, - PR_HEAD: payload.head.ref, - PR_BASE: payload.base.ref, - REPO_NAME: payload.repository.name, - REPO_OWNER: payload.repository.owner.login - }) - ); - } - @reaction(ReactionType.CreateIssue, ['owner', 'repo', 'title', 'body']) async createIssue(params: any): Promise { let res = await this._github.issues.create({ @@ -131,22 +56,6 @@ export class Github extends BaseService { URL: res.data.url, }; } - - @action(PipelineType.OnCreateIssue, ['owner', 'repo']) - listenOnCreateIssue(params: any): Observable { - return this.fromGitHubEvent( - "issues.opened", - (payload) => payload.repository.owner.login == params['owner'] - && payload.repository.name == params['repo'], - (payload) => ({ - REPO_NAME: payload.repository.name, - REPO_OWNER: payload.repository.owner.login, - ISSUE_NAME: payload.issue.title, - ISSUE_CONTENT: payload.issue.body, - ISSUE_AUTHOR: payload.sender.login, - }) - ); - } @reaction(ReactionType.CommentIssue, ['owner', 'repo', 'issue_number', 'body']) async commentIssue(params: any): Promise { @@ -159,24 +68,6 @@ export class Github extends BaseService { }; } - @action(PipelineType.OnCommentIssue, ['owner', 'repo']) - listenOnCommentIssue(params: any): Observable { - return this.fromGitHubEvent( - "issue_comment", - (payload) => payload.repository.owner.login == params['owner'] - && payload.repository.name == params['repo'], - (payload) => ({ - REPO_NAME: payload.repository.name, - REPO_OWNER: payload.repository.owner.login, - ISSUE_NAME: payload.issue.title, - ISSUE_CONTENT: payload.issue.body, - ISSUE_AUTHOR: payload.sender.login, - COMMENT: payload.comment.body, - COMMENTER: payload.comment.user.login - }) - ); - } - @reaction(ReactionType.CloseIssue, ['owner', 'repo', 'issue_number']) async closeIssue(params: any): Promise { let res = await this._github.issues.update({ @@ -188,22 +79,6 @@ export class Github extends BaseService { }; } - @action(PipelineType.OnCloseIssue, ['owner', 'repo']) - listenOnIssueClose(params: any): Observable { - return this.fromGitHubEvent( - "issues.opened", - (payload) => payload.repository.owner.login == params['owner'] - && payload.repository.name == params['repo'], - (payload) => ({ - REPO_NAME: payload.repository.name, - REPO_OWNER: payload.repository.owner.login, - ISSUE_NAME: payload.issue.title, - ISSUE_CONTENT: payload.issue.body, - ISSUE_AUTHOR: payload.sender.login - }) - ); - } - @reaction(ReactionType.CreateRepo, ['name']) async createRepo(params: any): Promise { let res = await this._github.rest.repos.createForAuthenticatedUser({ @@ -245,20 +120,6 @@ export class Github extends BaseService { }; } - @action(PipelineType.OnForkRepo, ['owner', 'repo']) - listenOnForkRepo(params: any): Observable { - return this.fromGitHubEvent( - "fork", - (payload) => payload.repository.owner.login == params['owner'] - && payload.repository.name == params['repo'], - (payload) => ({ - REPO_NAME: payload.repository.name, - REPO_OWNER: payload.repository.owner.login, - FORKER: payload.forkee.owner.login, - }) - ); - } - @reaction(ReactionType.StarRepo, ['owner', 'repo']) async starRepo(params: any): Promise { await this._github.activity.starRepoForAuthenticatedUser({ @@ -267,21 +128,6 @@ export class Github extends BaseService { return {}; } - @action(PipelineType.OnStarRepo, ['owner', 'repo']) - listenOnStarRepo(params: any): Observable { - return this.fromGitHubEvent( - "star.created", - (payload) => payload.repository.owner.login == params['owner'] - && payload.repository.name == params['repo'], - (payload) => ({ - REPO_NAME: payload.repository.name, - REPO_OWNER: payload.repository.owner.login, - STAR_COUNT: payload.repository.stargazers_count, - STARER: payload.sender.login - }) - ); - } - @reaction(ReactionType.WatchRepo, ['owner', 'repo']) async watchRepo(params: any): Promise { await this._github.activity.setRepoSubscription({ @@ -289,19 +135,4 @@ export class Github extends BaseService { }); return {}; } - - @action(PipelineType.OnWatchRepo, ['owner', 'repo']) - listenOnWatchRepo(params: any): Observable { - return this.fromGitHubEvent( - "watch.started", - (payload) => payload.repository.owner.login == params['owner'] - && payload.repository.name == params['repo'], - (payload) => ({ - REPO_NAME: payload.repository.name, - REPO_OWNER: payload.repository.owner.login, - WATCH_COUNT: payload.repository.watchers, - WATCHER: payload.sender.login - }) - ); - } }