mirror of
https://github.com/matrix-org/matrix-hookshot.git
synced 2025-03-10 21:19:13 +00:00
Run Clippy in CI (#753)
* Clippy fixes * Refactor to make rust linter happy * Enable warnings since we have none * Tidy up tests * changelog
This commit is contained in:
parent
1c692bea8f
commit
d772a4050c
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@ -44,7 +44,7 @@ jobs:
|
||||
with:
|
||||
node-version-file: .node-version
|
||||
- run: yarn # Need to build scripts to get rust bindings
|
||||
- run: yarn --silent ts-node src/Config/Defaults.ts --config | diff config.sample.yml -
|
||||
- run: yarn --silent ts-node src/config/Defaults.ts --config | diff config.sample.yml -
|
||||
|
||||
metrics-docs:
|
||||
runs-on: ubuntu-latest
|
||||
|
1
changelog.d/753.misc
Normal file
1
changelog.d/753.misc
Normal file
@ -0,0 +1 @@
|
||||
Apply more Rust clippy suggestions, and run clippy in CI.
|
@ -35,10 +35,10 @@
|
||||
"test:cover": "nyc --reporter=lcov --reporter=text yarn test",
|
||||
"lint": "yarn run lint:js && yarn run lint:rs",
|
||||
"lint:js": "eslint -c .eslintrc.js 'src/**/*.ts' 'tests/**/*.ts' 'web/**/*.ts' 'web/**/*.tsx'",
|
||||
"lint:rs": "cargo fmt --all -- --check",
|
||||
"lint:rs:apply": "cargo fmt --all",
|
||||
"generate-default-config": "ts-node src/Config/Defaults.ts --config > config.sample.yml",
|
||||
"validate-config": "ts-node src/Config/Config.ts"
|
||||
"lint:rs": "cargo fmt --all -- --check && cargo clippy -- -Dwarnings",
|
||||
"lint:rs:apply": "cargo fmt --all && cargo clippy --fix",
|
||||
"generate-default-config": "ts-node src/config/Defaults.ts --config > config.sample.yml",
|
||||
"validate-config": "ts-node src/config/Config.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@alloc/quick-lru": "^5.2.0",
|
||||
|
@ -2,20 +2,20 @@
|
||||
import "reflect-metadata";
|
||||
import { AdminAccountData, AdminRoomCommandHandler, Category } from "./AdminRoomCommandHandler";
|
||||
import { botCommand, compileBotCommands, handleCommand, BotCommands, HelpFunction } from "./BotCommands";
|
||||
import { BridgeConfig, BridgePermissionLevel } from "./Config/Config";
|
||||
import { BridgeConfig, BridgePermissionLevel } from "./config/Config";
|
||||
import { BridgeRoomState, BridgeRoomStateGitHub } from "./Widgets/BridgeWidgetInterface";
|
||||
import { Endpoints } from "@octokit/types";
|
||||
import { GitHubDiscussionSpace, GitHubIssueConnection, GitHubRepoConnection } from "./Connections";
|
||||
import { ConnectionManager } from "./ConnectionManager";
|
||||
import { FormatUtil } from "./FormatUtil";
|
||||
import { GetUserResponse } from "./Gitlab/Types";
|
||||
import { GitHubBotCommands } from "./Github/AdminCommands";
|
||||
import { GithubGraphQLClient } from "./Github/GithubInstance";
|
||||
import { GitHubBotCommands } from "./github/AdminCommands";
|
||||
import { GithubGraphQLClient } from "./github/GithubInstance";
|
||||
import { GitLabClient } from "./Gitlab/Client";
|
||||
import { Intent } from "matrix-bot-sdk";
|
||||
import { JiraBotCommands } from "./Jira/AdminCommands";
|
||||
import { JiraBotCommands } from "./jira/AdminCommands";
|
||||
import { NotifFilter, NotificationFilterStateContent } from "./NotificationFilters";
|
||||
import { ProjectsListResponseData } from "./Github/Types";
|
||||
import { ProjectsListResponseData } from "./github/Types";
|
||||
import { UserTokenStore } from "./UserTokenStore";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import markdown from "markdown-it";
|
||||
|
@ -1,6 +1,6 @@
|
||||
import EventEmitter from "events";
|
||||
import { Intent } from "matrix-bot-sdk";
|
||||
import { BridgeConfig } from "./Config/Config";
|
||||
import { BridgeConfig } from "./config/Config";
|
||||
import { UserTokenStore } from "./UserTokenStore";
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Bridge } from "../Bridge";
|
||||
|
||||
import { BridgeConfig, parseRegistrationFile } from "../Config/Config";
|
||||
import { BridgeConfig, parseRegistrationFile } from "../config/Config";
|
||||
import { Webhooks } from "../Webhooks";
|
||||
import { MatrixSender } from "../MatrixSender";
|
||||
import { UserNotificationWatcher } from "../Notifications/UserNotificationWatcher";
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { BridgeConfig } from "../Config/Config";
|
||||
import { BridgeConfig } from "../config/Config";
|
||||
import { Webhooks } from "../Webhooks";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { UserNotificationWatcher } from "../Notifications/UserNotificationWatcher";
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { BridgeConfig, parseRegistrationFile } from "../Config/Config";
|
||||
import { BridgeConfig, parseRegistrationFile } from "../config/Config";
|
||||
import { MatrixSender } from "../MatrixSender";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import Metrics from "../Metrics";
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { rm } from "fs/promises";
|
||||
|
||||
import { BridgeConfig, parseRegistrationFile } from "../Config/Config";
|
||||
import { BridgeConfig, parseRegistrationFile } from "../config/Config";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { LogService, MatrixClient } from "matrix-bot-sdk";
|
||||
import { getAppservice } from "../appservice";
|
||||
|
@ -3,7 +3,7 @@ import stringArgv from "string-argv";
|
||||
import { ApiError } from "./api";
|
||||
import { CommandError } from "./errors";
|
||||
import { MatrixMessageContent } from "./MatrixEvent";
|
||||
import { BridgePermissionLevel } from "./Config/Config";
|
||||
import { BridgePermissionLevel } from "./config/Config";
|
||||
import { PermissionCheckFn } from "./Connections";
|
||||
|
||||
const md = new markdown();
|
||||
|
@ -2,40 +2,40 @@ import { AdminAccountData } from "./AdminRoomCommandHandler";
|
||||
import { AdminRoom, BRIDGE_ROOM_TYPE, LEGACY_BRIDGE_ROOM_TYPE } from "./AdminRoom";
|
||||
import { Appservice, RichRepliesPreprocessor, IRichReplyMetadata, StateEvent, EventKind, PowerLevelsEvent, Intent } from "matrix-bot-sdk";
|
||||
import BotUsersManager from "./Managers/BotUsersManager";
|
||||
import { BridgeConfig, BridgePermissionLevel, GitLabInstance } from "./Config/Config";
|
||||
import { BridgeConfig, BridgePermissionLevel, GitLabInstance } from "./config/Config";
|
||||
import { BridgeWidgetApi } from "./Widgets/BridgeWidgetApi";
|
||||
import { CommentProcessor } from "./CommentProcessor";
|
||||
import { ConnectionManager } from "./ConnectionManager";
|
||||
import { GetIssueResponse, GetIssueOpts } from "./Gitlab/Types"
|
||||
import { GithubInstance } from "./Github/GithubInstance";
|
||||
import { GithubInstance } from "./github/GithubInstance";
|
||||
import { IBridgeStorageProvider } from "./Stores/StorageProvider";
|
||||
import { IConnection, GitHubDiscussionSpace, GitHubDiscussionConnection, GitHubUserSpace, JiraProjectConnection, GitLabRepoConnection,
|
||||
GitHubIssueConnection, GitHubProjectConnection, GitHubRepoConnection, GitLabIssueConnection, FigmaFileConnection, FeedConnection, GenericHookConnection } from "./Connections";
|
||||
import { IGitLabWebhookIssueStateEvent, IGitLabWebhookMREvent, IGitLabWebhookNoteEvent, IGitLabWebhookPushEvent, IGitLabWebhookReleaseEvent, IGitLabWebhookTagPushEvent, IGitLabWebhookWikiPageEvent } from "./Gitlab/WebhookTypes";
|
||||
import { JiraIssueEvent, JiraIssueUpdatedEvent, JiraVersionEvent } from "./Jira/WebhookTypes";
|
||||
import { JiraOAuthResult } from "./Jira/Types";
|
||||
import { JiraIssueEvent, JiraIssueUpdatedEvent, JiraVersionEvent } from "./jira/WebhookTypes";
|
||||
import { JiraOAuthResult } from "./jira/Types";
|
||||
import { MatrixEvent, MatrixMemberContent, MatrixMessageContent } from "./MatrixEvent";
|
||||
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
||||
import { MessageSenderClient } from "./MatrixSender";
|
||||
import { NotifFilter, NotificationFilterStateContent } from "./NotificationFilters";
|
||||
import { NotificationProcessor } from "./NotificationsProcessor";
|
||||
import { NotificationsEnableEvent, NotificationsDisableEvent } from "./Webhooks";
|
||||
import { GitHubOAuthToken, GitHubOAuthTokenResponse, ProjectsGetResponseData } from "./Github/Types";
|
||||
import { GitHubOAuthToken, GitHubOAuthTokenResponse, ProjectsGetResponseData } from "./github/Types";
|
||||
import { retry } from "./PromiseUtil";
|
||||
import { UserNotificationsEvent } from "./Notifications/UserNotificationWatcher";
|
||||
import { UserTokenStore } from "./UserTokenStore";
|
||||
import * as GitHubWebhookTypes from "@octokit/webhooks-types";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { Provisioner } from "./provisioning/provisioner";
|
||||
import { JiraProvisionerRouter } from "./Jira/Router";
|
||||
import { GitHubProvisionerRouter } from "./Github/Router";
|
||||
import { JiraProvisionerRouter } from "./jira/Router";
|
||||
import { GitHubProvisionerRouter } from "./github/Router";
|
||||
import { OAuthRequest } from "./WebhookTypes";
|
||||
import { promises as fs } from "fs";
|
||||
import Metrics from "./Metrics";
|
||||
import { FigmaEvent, ensureFigmaWebhooks } from "./figma";
|
||||
import { ListenerService } from "./ListenerService";
|
||||
import { SetupConnection } from "./Connections/SetupConnection";
|
||||
import { JiraOAuthRequestCloud, JiraOAuthRequestOnPrem, JiraOAuthRequestResult } from "./Jira/OAuth";
|
||||
import { JiraOAuthRequestCloud, JiraOAuthRequestOnPrem, JiraOAuthRequestResult } from "./jira/OAuth";
|
||||
import { GenericWebhookEvent, GenericWebhookEventResult } from "./generic/types";
|
||||
import { SetupWidget } from "./Widgets/SetupWidget";
|
||||
import { FeedEntry, FeedError, FeedReader, FeedSuccess } from "./feeds/FeedReader";
|
||||
|
@ -6,7 +6,7 @@ import { MatrixMessageContent, MatrixEvent } from "./MatrixEvent";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import axios from "axios";
|
||||
import { FormatUtil } from "./FormatUtil";
|
||||
import { IssuesGetCommentResponseData, ReposGetResponseData, IssuesGetResponseData } from "./Github/Types"
|
||||
import { IssuesGetCommentResponseData, ReposGetResponseData, IssuesGetResponseData } from "./github/Types"
|
||||
import { IGitLabWebhookNoteEvent } from "./Gitlab/WebhookTypes";
|
||||
|
||||
const REGEX_MENTION = /(^|\s)(@[a-z\d](?:[a-z\d]|-(?=[a-z\d])){0,38})(\s|$)/ig;
|
||||
|
@ -6,15 +6,15 @@
|
||||
|
||||
import { Appservice, Intent, StateEvent } from "matrix-bot-sdk";
|
||||
import { ApiError, ErrCode } from "./api";
|
||||
import { BridgeConfig, BridgePermissionLevel, GitLabInstance } from "./Config/Config";
|
||||
import { BridgeConfig, BridgePermissionLevel, GitLabInstance } from "./config/Config";
|
||||
import { CommentProcessor } from "./CommentProcessor";
|
||||
import { ConnectionDeclaration, ConnectionDeclarations, GenericHookConnection, GitHubDiscussionConnection, GitHubDiscussionSpace, GitHubIssueConnection, GitHubProjectConnection, GitHubRepoConnection, GitHubUserSpace, GitLabIssueConnection, GitLabRepoConnection, IConnection, IConnectionState, JiraProjectConnection } from "./Connections";
|
||||
import { FigmaFileConnection, FeedConnection } from "./Connections";
|
||||
import { GetConnectionTypeResponseItem } from "./provisioning/api";
|
||||
import { GitLabClient } from "./Gitlab/Client";
|
||||
import { GithubInstance } from "./Github/GithubInstance";
|
||||
import { GithubInstance } from "./github/GithubInstance";
|
||||
import { IBridgeStorageProvider } from "./Stores/StorageProvider";
|
||||
import { JiraProject, JiraVersion } from "./Jira/Types";
|
||||
import { JiraProject, JiraVersion } from "./jira/Types";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { MessageSenderClient } from "./MatrixSender";
|
||||
import { UserTokenStore } from "./UserTokenStore";
|
||||
|
@ -5,7 +5,7 @@ import { BaseConnection } from "./BaseConnection";
|
||||
import { IConnection, IConnectionState } from ".";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { IBridgeStorageProvider } from "../Stores/StorageProvider";
|
||||
import { BridgeConfig } from "../Config/Config";
|
||||
import { BridgeConfig } from "../config/Config";
|
||||
import { Connection, InstantiateConnectionOpts, ProvisionConnectionOpts } from "./IConnection";
|
||||
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
||||
|
||||
|
@ -8,7 +8,7 @@ import { Appservice, Intent, StateEvent } from "matrix-bot-sdk";
|
||||
import { ApiError, ErrCode } from "../api";
|
||||
import { BaseConnection } from "./BaseConnection";
|
||||
import { GetConnectionsResponseItem } from "../provisioning/api";
|
||||
import { BridgeConfigGenericWebhooks } from "../Config/Config";
|
||||
import { BridgeConfigGenericWebhooks } from "../config/Config";
|
||||
import { ensureUserIsInRoom } from "../IntentUtils";
|
||||
import { randomUUID } from 'node:crypto';
|
||||
|
||||
|
@ -9,10 +9,10 @@ import { Discussion } from "@octokit/webhooks-types";
|
||||
import emoji from "node-emoji";
|
||||
import markdown from "markdown-it";
|
||||
import { DiscussionCommentCreatedEvent } from "@octokit/webhooks-types";
|
||||
import { GithubGraphQLClient } from "../Github/GithubInstance";
|
||||
import { GithubGraphQLClient } from "../github/GithubInstance";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { BaseConnection } from "./BaseConnection";
|
||||
import { BridgeConfig, BridgeConfigGitHub } from "../Config/Config";
|
||||
import { BridgeConfig, BridgeConfigGitHub } from "../config/Config";
|
||||
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
||||
import QuickLRU from "@alloc/quick-lru";
|
||||
export interface GitHubDiscussionConnectionState {
|
||||
|
@ -1,13 +1,13 @@
|
||||
import { Connection, IConnection, InstantiateConnectionOpts } from "./IConnection";
|
||||
import { Appservice, Space, StateEvent } from "matrix-bot-sdk";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { ReposGetResponseData } from "../Github/Types";
|
||||
import { ReposGetResponseData } from "../github/Types";
|
||||
import axios from "axios";
|
||||
import { GitHubDiscussionConnection } from "./GithubDiscussion";
|
||||
import { GithubInstance } from "../Github/GithubInstance";
|
||||
import { GithubInstance } from "../github/GithubInstance";
|
||||
import { BaseConnection } from "./BaseConnection";
|
||||
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
||||
import { BridgeConfig } from "../Config/Config";
|
||||
import { BridgeConfig } from "../config/Config";
|
||||
|
||||
const log = new Logger("GitHubDiscussionSpace");
|
||||
|
||||
|
@ -9,11 +9,11 @@ import { MessageSenderClient } from "../MatrixSender";
|
||||
import { ensureUserIsInRoom, getIntentForUser } from "../IntentUtils";
|
||||
import { FormatUtil } from "../FormatUtil";
|
||||
import axios from "axios";
|
||||
import { GithubInstance } from "../Github/GithubInstance";
|
||||
import { IssuesGetCommentResponseData, IssuesGetResponseData, ReposGetResponseData} from "../Github/Types";
|
||||
import { GithubInstance } from "../github/GithubInstance";
|
||||
import { IssuesGetCommentResponseData, IssuesGetResponseData, ReposGetResponseData} from "../github/Types";
|
||||
import { IssuesEditedEvent, IssueCommentCreatedEvent } from "@octokit/webhooks-types";
|
||||
import { BaseConnection } from "./BaseConnection";
|
||||
import { BridgeConfigGitHub } from "../Config/Config";
|
||||
import { BridgeConfigGitHub } from "../config/Config";
|
||||
|
||||
export interface GitHubIssueConnectionState {
|
||||
org: string;
|
||||
|
@ -1,10 +1,10 @@
|
||||
import { Connection, IConnection, InstantiateConnectionOpts } from "./IConnection";
|
||||
import { Appservice, Intent, StateEvent } from "matrix-bot-sdk";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { ProjectsGetResponseData } from "../Github/Types";
|
||||
import { ProjectsGetResponseData } from "../github/Types";
|
||||
import { BaseConnection } from "./BaseConnection";
|
||||
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
||||
import { BridgeConfig } from "../Config/Config";
|
||||
import { BridgeConfig } from "../config/Config";
|
||||
|
||||
export interface GitHubProjectConnectionState {
|
||||
// eslint-disable-next-line camelcase
|
||||
|
@ -13,22 +13,22 @@ import { IssuesOpenedEvent, IssuesReopenedEvent, IssuesEditedEvent, PullRequestO
|
||||
import { MatrixMessageContent, MatrixEvent, MatrixReactionContent } from "../MatrixEvent";
|
||||
import { MessageSenderClient } from "../MatrixSender";
|
||||
import { CommandError, NotLoggedInError } from "../errors";
|
||||
import { NAMELESS_ORG_PLACEHOLDER, ReposGetResponseData } from "../Github/Types";
|
||||
import { NAMELESS_ORG_PLACEHOLDER, ReposGetResponseData } from "../github/Types";
|
||||
import { UserTokenStore } from "../UserTokenStore";
|
||||
import axios, { AxiosError } from "axios";
|
||||
import emoji from "node-emoji";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import markdown from "markdown-it";
|
||||
import { CommandConnection } from "./CommandConnection";
|
||||
import { GithubInstance } from "../Github/GithubInstance";
|
||||
import { GithubInstance } from "../github/GithubInstance";
|
||||
import { GitHubIssueConnection } from "./GithubIssue";
|
||||
import { BridgeConfigGitHub } from "../Config/Config";
|
||||
import { BridgeConfigGitHub } from "../config/Config";
|
||||
import { ApiError, ErrCode, ValidatorApiError } from "../api";
|
||||
import { PermissionCheckFn } from ".";
|
||||
import { GitHubRepoMessageBody, MinimalGitHubIssue } from "../libRs";
|
||||
import Ajv, { JSONSchemaType } from "ajv";
|
||||
import { HookFilter } from "../HookFilter";
|
||||
import { GitHubGrantChecker } from "../Github/GrantChecker";
|
||||
import { GitHubGrantChecker } from "../github/GrantChecker";
|
||||
|
||||
const log = new Logger("GitHubRepoConnection");
|
||||
const md = new markdown();
|
||||
|
@ -3,10 +3,10 @@ import { Appservice, Space, StateEvent } from "matrix-bot-sdk";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import axios from "axios";
|
||||
import { GitHubDiscussionSpace } from ".";
|
||||
import { GithubInstance } from "../Github/GithubInstance";
|
||||
import { GithubInstance } from "../github/GithubInstance";
|
||||
import { BaseConnection } from "./BaseConnection";
|
||||
import { ConfigGrantChecker, GrantChecker } from "../grants/GrantCheck";
|
||||
import { BridgeConfig } from "../Config/Config";
|
||||
import { BridgeConfig } from "../config/Config";
|
||||
|
||||
const log = new Logger("GitHubOwnerSpace");
|
||||
|
||||
|
@ -5,7 +5,7 @@ import { UserTokenStore } from "../UserTokenStore";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { CommentProcessor } from "../CommentProcessor";
|
||||
import { MessageSenderClient } from "../MatrixSender";
|
||||
import { BridgeConfig, BridgeConfigGitLab, GitLabInstance } from "../Config/Config";
|
||||
import { BridgeConfig, BridgeConfigGitLab, GitLabInstance } from "../config/Config";
|
||||
import { GetIssueResponse } from "../Gitlab/Types";
|
||||
import { IGitLabWebhookNoteEvent } from "../Gitlab/WebhookTypes";
|
||||
import { ensureUserIsInRoom, getIntentForUser } from "../IntentUtils";
|
||||
|
@ -6,7 +6,7 @@ import { BotCommands, botCommand, compileBotCommands } from "../BotCommands";
|
||||
import { MatrixEvent, MatrixMessageContent } from "../MatrixEvent";
|
||||
import markdown from "markdown-it";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { BridgeConfigGitLab, GitLabInstance } from "../Config/Config";
|
||||
import { BridgeConfigGitLab, GitLabInstance } from "../config/Config";
|
||||
import { IGitlabMergeRequest, IGitlabProject, IGitlabUser, IGitLabWebhookMREvent, IGitLabWebhookNoteEvent, IGitLabWebhookPushEvent, IGitLabWebhookReleaseEvent, IGitLabWebhookTagPushEvent, IGitLabWebhookWikiPageEvent } from "../Gitlab/WebhookTypes";
|
||||
import { CommandConnection } from "./CommandConnection";
|
||||
import { Connection, IConnection, IConnectionState, InstantiateConnectionOpts, ProvisionConnectionOpts } from "./IConnection";
|
||||
|
@ -2,12 +2,12 @@ import { MatrixEvent, MatrixMessageContent } from "../MatrixEvent";
|
||||
import { IssuesOpenedEvent, IssuesEditedEvent } from "@octokit/webhooks-types";
|
||||
import { ConnectionWarning, GetConnectionsResponseItem } from "../provisioning/api";
|
||||
import { Appservice, Intent, IRichReplyMetadata, StateEvent } from "matrix-bot-sdk";
|
||||
import { BridgeConfig, BridgePermissionLevel } from "../Config/Config";
|
||||
import { BridgeConfig, BridgePermissionLevel } from "../config/Config";
|
||||
import { UserTokenStore } from "../UserTokenStore";
|
||||
import { CommentProcessor } from "../CommentProcessor";
|
||||
import { MessageSenderClient } from "../MatrixSender";
|
||||
import { IBridgeStorageProvider } from "../Stores/StorageProvider";
|
||||
import { GithubInstance } from "../Github/GithubInstance";
|
||||
import { GithubInstance } from "../github/GithubInstance";
|
||||
import "reflect-metadata";
|
||||
|
||||
export type PermissionCheckFn = (service: string, level: BridgePermissionLevel) => boolean;
|
||||
|
@ -1,11 +1,11 @@
|
||||
import { Connection, IConnection, IConnectionState, InstantiateConnectionOpts, ProvisionConnectionOpts } from "./IConnection";
|
||||
import { Appservice, Intent, StateEvent } from "matrix-bot-sdk";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { JiraIssueEvent, JiraIssueUpdatedEvent, JiraVersionEvent } from "../Jira/WebhookTypes";
|
||||
import { JiraIssueEvent, JiraIssueUpdatedEvent, JiraVersionEvent } from "../jira/WebhookTypes";
|
||||
import { FormatUtil } from "../FormatUtil";
|
||||
import markdownit from "markdown-it";
|
||||
import { generateJiraWebLinkFromIssue, generateJiraWebLinkFromVersion } from "../Jira";
|
||||
import { JiraProject, JiraVersion } from "../Jira/Types";
|
||||
import { generateJiraWebLinkFromIssue, generateJiraWebLinkFromVersion } from "../jira";
|
||||
import { JiraProject, JiraVersion } from "../jira/Types";
|
||||
import { botCommand, BotCommands, compileBotCommands } from "../BotCommands";
|
||||
import { MatrixMessageContent } from "../MatrixEvent";
|
||||
import { CommandConnection } from "./CommandConnection";
|
||||
@ -14,10 +14,10 @@ import { CommandError, NotLoggedInError } from "../errors";
|
||||
import { ApiError, ErrCode } from "../api";
|
||||
import JiraApi from "jira-client";
|
||||
import { GetConnectionsResponseItem } from "../provisioning/api";
|
||||
import { BridgeConfigJira } from "../Config/Config";
|
||||
import { HookshotJiraApi } from "../Jira/Client";
|
||||
import { BridgeConfigJira } from "../config/Config";
|
||||
import { HookshotJiraApi } from "../jira/Client";
|
||||
import { GrantChecker } from "../grants/GrantCheck";
|
||||
import { JiraGrantChecker } from "../Jira/GrantChecker";
|
||||
import { JiraGrantChecker } from "../jira/GrantChecker";
|
||||
|
||||
type JiraAllowedEventsNames =
|
||||
"issue_created" |
|
||||
|
@ -3,7 +3,7 @@ import { BotCommands, botCommand, compileBotCommands, HelpFunction } from "../Bo
|
||||
import { CommandConnection } from "./CommandConnection";
|
||||
import { GenericHookConnection, GitHubRepoConnection, JiraProjectConnection, JiraProjectConnectionState } from ".";
|
||||
import { CommandError } from "../errors";
|
||||
import { BridgePermissionLevel } from "../Config/Config";
|
||||
import { BridgePermissionLevel } from "../config/Config";
|
||||
import markdown from "markdown-it";
|
||||
import { FigmaFileConnection } from "./FigmaFileConnection";
|
||||
import { FeedConnection, FeedConnectionState } from "./FeedConnection";
|
||||
|
@ -1,9 +1,9 @@
|
||||
/* eslint-disable camelcase */
|
||||
import { ProjectsListResponseData } from './Github/Types';
|
||||
import { ProjectsListResponseData } from './github/Types';
|
||||
import emoji from "node-emoji";
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore
|
||||
import { JiraIssue } from './Jira/Types';
|
||||
import { JiraIssue } from './jira/Types';
|
||||
import { formatLabels, getPartialBodyForJiraIssue, hashId, getPartialBodyForGithubIssue, getPartialBodyForGithubRepo, MinimalGitHubIssue } from "./libRs";
|
||||
|
||||
interface IMinimalPR {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import axios from "axios";
|
||||
import { GitLabInstance } from "../Config/Config";
|
||||
import { GitLabInstance } from "../config/Config";
|
||||
import { GetIssueResponse, GetUserResponse, CreateIssueOpts, CreateIssueResponse, GetIssueOpts, EditIssueOpts, GetTodosResponse, EventsOpts, CreateIssueNoteOpts, CreateIssueNoteResponse, GetProjectResponse, ProjectHook, ProjectHookOpts, AccessLevel, SimpleProject } from "./Types";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { URLSearchParams } from "url";
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { Appservice } from "matrix-bot-sdk";
|
||||
import { BridgeConfigGitLab } from "../Config/Config";
|
||||
import { BridgeConfigGitLab } from "../config/Config";
|
||||
import { GitLabRepoConnection } from "../Connections";
|
||||
import { GrantChecker } from "../grants/GrantCheck";
|
||||
import { UserTokenStore } from "../UserTokenStore";
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Appservice, Intent } from "matrix-bot-sdk";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
|
||||
import { BridgeConfig } from "../Config/Config";
|
||||
import { BridgeConfig } from "../config/Config";
|
||||
|
||||
const log = new Logger("BotUsersManager");
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { BridgeConfig } from "./Config/Config";
|
||||
import { BridgeConfig } from "./config/Config";
|
||||
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
||||
import { Appservice } from "matrix-bot-sdk";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { BridgeConfigQueue } from "../Config/Config";
|
||||
import { BridgeConfigQueue } from "../config/Config";
|
||||
import { LocalMQ } from "./LocalMQ";
|
||||
import { RedisMQ } from "./RedisQueue";
|
||||
import { MessageQueue } from "./Types";
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
import { MessageQueue, MessageQueueMessage, DEFAULT_RES_TIMEOUT, MessageQueueMessageOut } from "./Types";
|
||||
import { Redis, default as redis } from "ioredis";
|
||||
import { BridgeConfigQueue } from "../Config/Config";
|
||||
import { BridgeConfigQueue } from "../config/Config";
|
||||
import { EventEmitter } from "events";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { randomUUID } from 'node:crypto';
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Octokit, RestEndpointMethodTypes } from "@octokit/rest";
|
||||
import { EventEmitter } from "events";
|
||||
import { GithubInstance } from "../Github/GithubInstance";
|
||||
import { GitHubUserNotification as HSGitHubUserNotification } from "../Github/Types";
|
||||
import { GithubInstance } from "../github/GithubInstance";
|
||||
import { GitHubUserNotification as HSGitHubUserNotification } from "../github/Types";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { NotificationWatcherTask } from "./NotificationWatcherTask";
|
||||
import { RequestError } from "@octokit/request-error";
|
||||
|
@ -4,9 +4,9 @@ import { createMessageQueue, MessageQueue, MessageQueueMessage } from "../Messag
|
||||
import { MessageSenderClient } from "../MatrixSender";
|
||||
import { NotificationWatcherTask } from "./NotificationWatcherTask";
|
||||
import { GitHubWatcher } from "./GitHubWatcher";
|
||||
import { GitHubUserNotification } from "../Github/Types";
|
||||
import { GitHubUserNotification } from "../github/Types";
|
||||
import { GitLabWatcher } from "./GitLabWatcher";
|
||||
import { BridgeConfig, BridgePermissionLevel } from "../Config/Config";
|
||||
import { BridgeConfig, BridgePermissionLevel } from "../config/Config";
|
||||
import Metrics from "../Metrics";
|
||||
export interface UserNotificationsEvent {
|
||||
roomId: string;
|
||||
|
@ -5,8 +5,8 @@ import { Logger } from "matrix-appservice-bridge";
|
||||
import { AdminRoom } from "./AdminRoom";
|
||||
import markdown from "markdown-it";
|
||||
import { FormatUtil } from "./FormatUtil";
|
||||
import { PullGetResponseData, IssuesGetResponseData, PullsListRequestedReviewersResponseData, PullsListReviewsResponseData, IssuesGetCommentResponseData } from "./Github/Types";
|
||||
import { GitHubUserNotification } from "./Github/Types";
|
||||
import { PullGetResponseData, IssuesGetResponseData, PullsListRequestedReviewersResponseData, PullsListReviewsResponseData, IssuesGetCommentResponseData } from "./github/Types";
|
||||
import { GitHubUserNotification } from "./github/Types";
|
||||
import { components } from "@octokit/openapi-types/types";
|
||||
import { NotifFilter } from "./NotificationFilters";
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { MemoryStorageProvider as MSP } from "matrix-bot-sdk";
|
||||
import { IBridgeStorageProvider } from "./StorageProvider";
|
||||
import { IssuesGetResponseData } from "../Github/Types";
|
||||
import { IssuesGetResponseData } from "../github/Types";
|
||||
import { ProvisionSession } from "matrix-appservice-bridge";
|
||||
import QuickLRU from "@alloc/quick-lru";
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { IssuesGetResponseData } from "../Github/Types";
|
||||
import { IssuesGetResponseData } from "../github/Types";
|
||||
import { Redis, default as redis } from "ioredis";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { ProvisioningStore } from "matrix-appservice-bridge";
|
||||
import { IAppserviceStorageProvider, IStorageProvider } from "matrix-bot-sdk";
|
||||
import { IssuesGetResponseData } from "../Github/Types";
|
||||
import { IssuesGetResponseData } from "../github/Types";
|
||||
|
||||
export interface IBridgeStorageProvider extends IAppserviceStorageProvider, IStorageProvider, ProvisioningStore {
|
||||
connect?(): Promise<void>;
|
||||
|
@ -1,20 +1,20 @@
|
||||
import { GithubInstance } from "./Github/GithubInstance";
|
||||
import { GithubInstance } from "./github/GithubInstance";
|
||||
import { GitLabClient } from "./Gitlab/Client";
|
||||
import { Intent } from "matrix-bot-sdk";
|
||||
import { promises as fs } from "fs";
|
||||
import { publicEncrypt, privateDecrypt } from "crypto";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { isJiraCloudInstance, JiraClient } from "./Jira/Client";
|
||||
import { JiraStoredToken } from "./Jira/Types";
|
||||
import { BridgeConfig, BridgeConfigJira, BridgeConfigJiraOnPremOAuth, BridgePermissionLevel } from "./Config/Config";
|
||||
import { isJiraCloudInstance, JiraClient } from "./jira/Client";
|
||||
import { JiraStoredToken } from "./jira/Types";
|
||||
import { BridgeConfig, BridgeConfigJira, BridgeConfigJiraOnPremOAuth, BridgePermissionLevel } from "./config/Config";
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import { GitHubOAuthToken } from "./Github/Types";
|
||||
import { GitHubOAuthToken } from "./github/Types";
|
||||
import { ApiError, ErrCode } from "./api";
|
||||
import { JiraOAuth } from "./Jira/OAuth";
|
||||
import { JiraCloudOAuth } from "./Jira/oauth/CloudOAuth";
|
||||
import { JiraOnPremOAuth } from "./Jira/oauth/OnPremOAuth";
|
||||
import { JiraOnPremClient } from "./Jira/client/OnPremClient";
|
||||
import { JiraCloudClient } from "./Jira/client/CloudClient";
|
||||
import { JiraOAuth } from "./jira/OAuth";
|
||||
import { JiraCloudOAuth } from "./jira/oauth/CloudOAuth";
|
||||
import { JiraOnPremOAuth } from "./jira/oauth/OnPremOAuth";
|
||||
import { JiraOnPremClient } from "./jira/client/OnPremClient";
|
||||
import { JiraCloudClient } from "./jira/client/CloudClient";
|
||||
import { TokenError, TokenErrorCode } from "./errors";
|
||||
import { TypedEmitter } from "tiny-typed-emitter";
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* eslint-disable camelcase */
|
||||
import { BridgeConfig } from "./Config/Config";
|
||||
import { BridgeConfig } from "./config/Config";
|
||||
import { Router, default as express, Request, Response } from "express";
|
||||
import { EventEmitter } from "events";
|
||||
import { MessageQueue, createMessageQueue } from "./MessageQueue";
|
||||
@ -8,14 +8,14 @@ import qs from "querystring";
|
||||
import axios from "axios";
|
||||
import { IGitLabWebhookEvent, IGitLabWebhookIssueStateEvent, IGitLabWebhookMREvent, IGitLabWebhookReleaseEvent } from "./Gitlab/WebhookTypes";
|
||||
import { EmitterWebhookEvent, EmitterWebhookEventName, Webhooks as OctokitWebhooks } from "@octokit/webhooks"
|
||||
import { IJiraWebhookEvent } from "./Jira/WebhookTypes";
|
||||
import { JiraWebhooksRouter } from "./Jira/Router";
|
||||
import { IJiraWebhookEvent } from "./jira/WebhookTypes";
|
||||
import { JiraWebhooksRouter } from "./jira/Router";
|
||||
import { OAuthRequest } from "./WebhookTypes";
|
||||
import { GitHubOAuthTokenResponse } from "./Github/Types";
|
||||
import { GitHubOAuthTokenResponse } from "./github/Types";
|
||||
import Metrics from "./Metrics";
|
||||
import { FigmaWebhooksRouter } from "./figma/router";
|
||||
import { GenericWebhooksRouter } from "./generic/Router";
|
||||
import { GithubInstance } from "./Github/GithubInstance";
|
||||
import { GithubInstance } from "./github/GithubInstance";
|
||||
import QuickLRU from "@alloc/quick-lru";
|
||||
|
||||
const log = new Logger("Webhooks");
|
||||
|
@ -2,7 +2,7 @@ import { Application, NextFunction, Response } from "express";
|
||||
import { AdminRoom } from "../AdminRoom";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { ApiError, ErrCode } from "../api";
|
||||
import { BridgeConfig } from "../Config/Config";
|
||||
import { BridgeConfig } from "../config/Config";
|
||||
import { GetAuthPollResponse, GetAuthResponse, GetConnectionsForServiceResponse } from "./BridgeWidgetInterface";
|
||||
import { ProvisioningApi, ProvisioningRequest } from "matrix-appservice-bridge";
|
||||
import { IBridgeStorageProvider } from "../Stores/StorageProvider";
|
||||
@ -12,7 +12,7 @@ import { assertUserPermissionsInRoom, GetConnectionsResponseItem } from "../prov
|
||||
import { Appservice, PowerLevelsEvent } from "matrix-bot-sdk";
|
||||
import { GoNebMigrator } from "./GoNebMigrator";
|
||||
import { StatusCodes } from "http-status-codes";
|
||||
import { GithubInstance } from '../Github/GithubInstance';
|
||||
import { GithubInstance } from '../github/GithubInstance';
|
||||
import { AllowedTokenTypes, TokenType, UserTokenStore } from '../UserTokenStore';
|
||||
|
||||
const log = new Logger("BridgeWidgetApi");
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
import { Intent } from "matrix-bot-sdk";
|
||||
import { BridgeWidgetConfig } from "../Config/Config";
|
||||
import { BridgeWidgetConfig } from "../config/Config";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { CommandError } from "../errors";
|
||||
import { HookshotWidgetKind } from "./WidgetKind";
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { Appservice, IAppserviceCryptoStorageProvider, IAppserviceRegistration, RustSdkAppserviceCryptoStorageProvider, RustSdkCryptoStoreType } from "matrix-bot-sdk";
|
||||
import { BridgeConfig } from "./Config/Config";
|
||||
import { BridgeConfig } from "./config/Config";
|
||||
import Metrics from "./Metrics";
|
||||
import { MemoryStorageProvider } from "./Stores/MemoryStorageProvider";
|
||||
import { RedisStorageProvider } from "./Stores/RedisStorageProvider";
|
||||
|
@ -8,7 +8,7 @@ import { GitHubRepoConnectionOptions } from "../Connections/GithubRepo";
|
||||
import { BridgeConfigActorPermission, BridgePermissions } from "../libRs";
|
||||
import { ConfigError } from "../errors";
|
||||
import { ApiError, ErrCode } from "../api";
|
||||
import { GithubInstance, GITHUB_CLOUD_URL } from "../Github/GithubInstance";
|
||||
import { GithubInstance, GITHUB_CLOUD_URL } from "../github/GithubInstance";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
|
||||
const log = new Logger("Config");
|
@ -42,13 +42,13 @@ impl BridgePermissions {
|
||||
pub fn new(config: Vec<BridgeConfigActorPermission>) -> Self {
|
||||
let mut room_membership = HashMap::new();
|
||||
for entry in config.iter() {
|
||||
if entry.actor.starts_with("!") {
|
||||
if entry.actor.starts_with('!') {
|
||||
room_membership.insert(entry.actor.clone(), HashSet::new());
|
||||
}
|
||||
}
|
||||
BridgePermissions {
|
||||
config: config,
|
||||
room_membership: room_membership,
|
||||
config,
|
||||
room_membership,
|
||||
}
|
||||
}
|
||||
|
||||
@ -58,7 +58,7 @@ impl BridgePermissions {
|
||||
domain: &String,
|
||||
mxid: &String,
|
||||
) -> bool {
|
||||
if actor_permission.actor.starts_with("!") {
|
||||
if actor_permission.actor.starts_with('!') {
|
||||
match self.room_membership.get(&actor_permission.actor) {
|
||||
Some(set) => {
|
||||
return set.contains(mxid);
|
||||
@ -69,9 +69,9 @@ impl BridgePermissions {
|
||||
}
|
||||
}
|
||||
}
|
||||
return actor_permission.actor.eq(domain)
|
||||
actor_permission.actor.eq(domain)
|
||||
|| actor_permission.actor.eq(mxid)
|
||||
|| actor_permission.actor == "*";
|
||||
|| actor_permission.actor == "*"
|
||||
}
|
||||
|
||||
#[napi]
|
||||
@ -81,22 +81,16 @@ impl BridgePermissions {
|
||||
|
||||
#[napi]
|
||||
pub fn add_member_to_cache(&mut self, room_id: String, mxid: String) {
|
||||
match self.room_membership.get_mut(&room_id) {
|
||||
Some(set) => {
|
||||
if let Some(set) = self.room_membership.get_mut(&room_id) {
|
||||
set.insert(mxid);
|
||||
}
|
||||
None => { /* Do nothing, not interested in this one. */ }
|
||||
}
|
||||
}
|
||||
|
||||
#[napi]
|
||||
pub fn remove_member_from_cache(&mut self, room_id: String, mxid: String) {
|
||||
match self.room_membership.get_mut(&room_id) {
|
||||
Some(set) => {
|
||||
if let Some(set) = self.room_membership.get_mut(&room_id) {
|
||||
set.remove(&mxid);
|
||||
}
|
||||
None => { /* Do nothing, not interested in this one. */ }
|
||||
}
|
||||
}
|
||||
|
||||
#[napi]
|
||||
@ -107,13 +101,12 @@ impl BridgePermissions {
|
||||
permission: String,
|
||||
) -> napi::Result<bool> {
|
||||
let parts: Vec<&str> = mxid.split(':').collect();
|
||||
let domain: String;
|
||||
let permission_int = permission_level_to_int(permission)?;
|
||||
if parts.len() > 1 {
|
||||
domain = parts[1].to_string();
|
||||
let domain = if parts.len() > 1 {
|
||||
parts[1].to_string()
|
||||
} else {
|
||||
domain = parts[0].to_string();
|
||||
}
|
||||
parts[0].to_string()
|
||||
};
|
||||
for actor_permission in self.config.iter() {
|
||||
// Room_id
|
||||
if !self.match_actor(actor_permission, &domain, &mxid) {
|
||||
@ -139,13 +132,12 @@ impl BridgePermissions {
|
||||
#[napi]
|
||||
pub fn check_action_any(&self, mxid: String, permission: String) -> napi::Result<bool> {
|
||||
let parts: Vec<&str> = mxid.split(':').collect();
|
||||
let domain: String;
|
||||
let permission_int = permission_level_to_int(permission)?;
|
||||
if parts.len() > 1 {
|
||||
domain = parts[1].to_string();
|
||||
let domain = if parts.len() > 1 {
|
||||
parts[1].to_string()
|
||||
} else {
|
||||
domain = parts[0].to_string();
|
||||
}
|
||||
parts[0].to_string()
|
||||
};
|
||||
for actor_permission in self.config.iter() {
|
||||
if !self.match_actor(actor_permission, &domain, &mxid) {
|
||||
continue;
|
@ -1,5 +1,5 @@
|
||||
import { MatrixError } from "matrix-bot-sdk";
|
||||
import { BridgeConfigFeeds } from "../Config/Config";
|
||||
import { BridgeConfigFeeds } from "../config/Config";
|
||||
import { ConnectionManager } from "../ConnectionManager";
|
||||
import { FeedConnection } from "../Connections";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { BridgeConfigFigma } from "../Config/Config";
|
||||
import { BridgeConfigFigma } from "../config/Config";
|
||||
import * as Figma from 'figma-js';
|
||||
import { MatrixClient } from "matrix-bot-sdk";
|
||||
export * from "./router";
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { BridgeConfigFigma } from "../Config/Config";
|
||||
import { BridgeConfigFigma } from "../config/Config";
|
||||
import { MessageQueue } from "../MessageQueue";
|
||||
import { Request, Response, Router, json } from "express";
|
||||
import { FigmaPayload } from "./types";
|
||||
|
@ -1,6 +1,6 @@
|
||||
use crate::Github::types::*;
|
||||
use crate::Jira;
|
||||
use crate::Jira::types::{JiraIssue, JiraIssueLight, JiraIssueMessageBody, JiraIssueSimpleItem};
|
||||
use crate::github::types::*;
|
||||
use crate::jira;
|
||||
use crate::jira::types::{JiraIssue, JiraIssueLight, JiraIssueMessageBody, JiraIssueSimpleItem};
|
||||
use contrast;
|
||||
use md5::{Digest, Md5};
|
||||
use napi::bindgen_prelude::*;
|
||||
@ -23,29 +23,23 @@ pub struct MatrixMessageFormatResult {
|
||||
}
|
||||
|
||||
fn parse_rgb(input_color: String) -> Result<rgb::RGB8> {
|
||||
let chunk_size;
|
||||
let color;
|
||||
if input_color.starts_with('#') {
|
||||
let color = if input_color.starts_with('#') {
|
||||
let mut chars = input_color.chars();
|
||||
chars.next();
|
||||
color = String::from_iter(chars);
|
||||
String::from_iter(chars)
|
||||
} else {
|
||||
color = input_color;
|
||||
}
|
||||
match color.len() {
|
||||
6 => {
|
||||
chunk_size = 2;
|
||||
}
|
||||
3 => {
|
||||
chunk_size = 1;
|
||||
}
|
||||
input_color
|
||||
};
|
||||
let chunk_size = match color.len() {
|
||||
6 => 2,
|
||||
3 => 1,
|
||||
_ => {
|
||||
return Err(Error::new(
|
||||
Status::InvalidArg,
|
||||
format!("color '{}' is invalid", color),
|
||||
));
|
||||
}
|
||||
}
|
||||
};
|
||||
let mut rgb = RGB::default();
|
||||
let i = 0;
|
||||
for color_byte in color.as_bytes().chunks(chunk_size) {
|
||||
@ -82,7 +76,7 @@ pub fn format_labels(array: Vec<IssueLabelDetail>) -> Result<MatrixMessageFormat
|
||||
for (i, label) in array.into_iter().enumerate() {
|
||||
if i != 0 {
|
||||
plain.push_str(", ");
|
||||
html.push_str(" ");
|
||||
html.push(' ');
|
||||
}
|
||||
plain.push_str(&label.name);
|
||||
|
||||
@ -92,26 +86,23 @@ pub fn format_labels(array: Vec<IssueLabelDetail>) -> Result<MatrixMessageFormat
|
||||
write!(html, " data-mx-bg-color=\"#{}\"", color).unwrap();
|
||||
// Determine the constrast
|
||||
let color_rgb = parse_rgb(color)?;
|
||||
let contrast_color;
|
||||
let contrast_color =
|
||||
if contrast::contrast::<u8, f32>(color_rgb, RGB::new(0, 0, 0)) > 4.5 {
|
||||
contrast_color = "#000000";
|
||||
"#000000"
|
||||
} else {
|
||||
contrast_color = "#FFFFFF";
|
||||
}
|
||||
"#FFFFFF"
|
||||
};
|
||||
write!(html, " data-mx-color=\"{}\"", contrast_color).unwrap();
|
||||
}
|
||||
if let Some(description) = label.description {
|
||||
write!(html, " title=\"{}\"", description).unwrap();
|
||||
}
|
||||
html.push_str(">");
|
||||
html.push('>');
|
||||
html.push_str(&label.name);
|
||||
html.push_str("</span>");
|
||||
}
|
||||
|
||||
Ok(MatrixMessageFormatResult {
|
||||
html: html,
|
||||
plain: plain,
|
||||
})
|
||||
Ok(MatrixMessageFormatResult { html, plain })
|
||||
}
|
||||
|
||||
/// Generate extra message content for GitHub repo related events
|
||||
@ -156,7 +147,7 @@ pub fn get_partial_body_for_jira_issue(jira_issue: JiraIssue) -> Result<JiraIssu
|
||||
_self: jira_issue._self,
|
||||
key: jira_issue.key,
|
||||
};
|
||||
let external_url = Jira::utils::generate_jira_web_link_from_issue(&light_issue)?;
|
||||
let external_url = jira::utils::generate_jira_web_link_from_issue(&light_issue)?;
|
||||
|
||||
Ok(JiraIssueMessageBody {
|
||||
jira_issue: JiraIssueSimpleItem {
|
||||
@ -169,7 +160,7 @@ pub fn get_partial_body_for_jira_issue(jira_issue: JiraIssue) -> Result<JiraIssu
|
||||
key: jira_issue.fields.project.key,
|
||||
api_url: jira_issue.fields.project._self,
|
||||
},
|
||||
external_url: external_url,
|
||||
external_url,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@ import { CommandError, TokenError, TokenErrorCode } from "../errors";
|
||||
import { GithubInstance } from "./GithubInstance";
|
||||
import { GitHubOAuthToken } from "./Types";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { BridgePermissionLevel } from "../Config/Config";
|
||||
import { BridgePermissionLevel } from "../config/Config";
|
||||
|
||||
const log = new Logger('GitHubBotCommands');
|
||||
export class GitHubBotCommands extends AdminRoomCommandHandler {
|
@ -1,5 +1,5 @@
|
||||
import { Router, Request, Response, NextFunction } from "express";
|
||||
import { BridgeConfigGitHub } from "../Config/Config";
|
||||
import { BridgeConfigGitHub } from "../config/Config";
|
||||
import { ApiError, ErrCode } from "../api";
|
||||
import { UserTokenStore } from "../UserTokenStore";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
@ -1,6 +1,6 @@
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { Appservice, Intent, MatrixError } from "matrix-bot-sdk";
|
||||
import { BridgeConfig, BridgePermissionLevel } from "../Config/Config";
|
||||
import { BridgeConfig, BridgePermissionLevel } from "../config/Config";
|
||||
import { FormatUtil } from "../FormatUtil";
|
||||
|
||||
const GRANT_ACCOUNT_DATA_KEY = "uk.half-shot.matrix-hookshot.grant";
|
||||
|
@ -2,7 +2,7 @@ import { AdminRoomCommandHandler, Category } from "../AdminRoomCommandHandler";
|
||||
import { botCommand } from "../BotCommands";
|
||||
import { JiraAPIAccessibleResource } from "./Types";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { BridgePermissionLevel } from "../Config/Config";
|
||||
import { BridgePermissionLevel } from "../config/Config";
|
||||
|
||||
const log = new Logger('JiraBotCommands');
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { BridgeConfigJira } from "../Config/Config";
|
||||
import { BridgeConfigJira } from "../config/Config";
|
||||
import { MessageQueue } from "../MessageQueue";
|
||||
import { Router, Request, Response, NextFunction, json } from "express";
|
||||
import { UserTokenStore } from "../UserTokenStore";
|
@ -2,7 +2,7 @@
|
||||
import axios from 'axios';
|
||||
import QuickLRU from "@alloc/quick-lru";
|
||||
import { JiraAPIAccessibleResource, JiraIssue, JiraOAuthResult, JiraProject, JiraCloudProjectSearchResponse, JiraStoredToken } from '../Types';
|
||||
import { BridgeConfigJira, BridgeConfigJiraCloudOAuth } from '../../Config/Config';
|
||||
import { BridgeConfigJira, BridgeConfigJiraCloudOAuth } from '../../config/Config';
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
import { HookshotJiraApi, JiraClient } from '../Client';
|
||||
import JiraApi from 'jira-client';
|
@ -1,6 +1,6 @@
|
||||
|
||||
import { JiraAPIAccessibleResource, JiraProject, JiraStoredToken, JiraOnPremProjectSearchResponse } from '../Types';
|
||||
import { BridgeConfigJiraOnPremOAuth } from '../../Config/Config';
|
||||
import { BridgeConfigJiraOnPremOAuth } from '../../config/Config';
|
||||
import { decodeJiraToken } from '../OAuth';
|
||||
import { KeyObject } from 'crypto';
|
||||
import { HookshotJiraApi, JiraClient } from '../Client';
|
@ -1,4 +1,4 @@
|
||||
import { BridgeConfigJiraCloudOAuth } from "../../Config/Config";
|
||||
import { BridgeConfigJiraCloudOAuth } from "../../config/Config";
|
||||
import { JiraOAuth } from "../OAuth";
|
||||
import qs from "querystring";
|
||||
import axios from "axios";
|
@ -1,4 +1,4 @@
|
||||
import { BridgeConfigJiraOnPremOAuth } from "../../Config/Config";
|
||||
import { BridgeConfigJiraOnPremOAuth } from "../../config/Config";
|
||||
import Axios, { Method } from "axios"
|
||||
import qs from "querystring";
|
||||
import { createPrivateKey, createSign, KeyObject } from "crypto";
|
@ -61,5 +61,6 @@ pub struct JiraVersion {
|
||||
pub id: String,
|
||||
pub description: String,
|
||||
pub name: String,
|
||||
pub projectId: String,
|
||||
#[serde(rename = "projectId")]
|
||||
pub project_id: String,
|
||||
}
|
@ -6,7 +6,7 @@ use url::Url;
|
||||
/// Generate a URL for a given Jira Issue object.
|
||||
#[napi(js_name = "generateJiraWeblinkFromIssue")]
|
||||
pub fn js_generate_jira_web_link_from_issue(jira_issue: JiraIssueLight) -> Result<String> {
|
||||
return generate_jira_web_link_from_issue(&jira_issue);
|
||||
generate_jira_web_link_from_issue(&jira_issue)
|
||||
}
|
||||
|
||||
pub fn generate_jira_web_link_from_issue(jira_issue: &JiraIssueLight) -> Result<String> {
|
||||
@ -27,7 +27,7 @@ pub fn generate_jira_web_link_from_issue(jira_issue: &JiraIssueLight) -> Result<
|
||||
/// Generate a URL for a given Jira Version object.
|
||||
#[napi(js_name = "generateJiraWeblinkFromVersion")]
|
||||
pub fn js_generate_jira_web_link_from_version(jira_version: JiraVersion) -> Result<String> {
|
||||
return generate_jira_web_link_from_version(&jira_version);
|
||||
generate_jira_web_link_from_version(&jira_version)
|
||||
}
|
||||
|
||||
pub fn generate_jira_web_link_from_version(jira_version: &JiraVersion) -> Result<String> {
|
||||
@ -39,7 +39,7 @@ pub fn generate_jira_web_link_from_version(jira_version: &JiraVersion) -> Result
|
||||
url.host_str().unwrap(),
|
||||
url.port()
|
||||
.map_or(String::new(), |port| format!(":{}", port)),
|
||||
jira_version.projectId,
|
||||
jira_version.project_id,
|
||||
jira_version.id
|
||||
)),
|
||||
Err(err) => Err(Error::new(Status::Unknown, err.to_string())),
|
@ -1,8 +1,8 @@
|
||||
pub mod Config;
|
||||
pub mod Github;
|
||||
pub mod Jira;
|
||||
pub mod config;
|
||||
pub mod feeds;
|
||||
pub mod format_util;
|
||||
pub mod github;
|
||||
pub mod jira;
|
||||
|
||||
#[macro_use]
|
||||
extern crate napi_derive;
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { BridgeConfigProvisioning } from "../Config/Config";
|
||||
import { BridgeConfigProvisioning } from "../config/Config";
|
||||
import { Router, default as express, NextFunction, Request, Response } from "express";
|
||||
import { ConnectionManager } from "../ConnectionManager";
|
||||
import { Logger } from "matrix-appservice-bridge";
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import { expect } from "chai";
|
||||
import { AdminRoom } from "../src/AdminRoom";
|
||||
import { DefaultConfig } from "../src/Config/Defaults";
|
||||
import { DefaultConfig } from "../src/config/Defaults";
|
||||
import { ConnectionManager } from "../src/ConnectionManager";
|
||||
import { NotifFilter } from "../src/NotificationFilters";
|
||||
import { UserTokenStore } from "../src/UserTokenStore";
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { AxiosResponse, AxiosStatic } from "axios";
|
||||
import { expect } from "chai";
|
||||
import EventEmitter from "events";
|
||||
import { BridgeConfigFeeds } from "../src/Config/Config";
|
||||
import { BridgeConfigFeeds } from "../src/config/Config";
|
||||
import { ConnectionManager } from "../src/ConnectionManager";
|
||||
import { IConnection } from "../src/Connections";
|
||||
import { FeedEntry, FeedReader } from "../src/feeds/FeedReader";
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { FormatUtil } from "../src/FormatUtil";
|
||||
import { expect } from "chai";
|
||||
import { JiraIssue, JiraProject } from "../src/Jira/Types";
|
||||
import { JiraIssue, JiraProject } from "../src/jira/Types";
|
||||
|
||||
const SIMPLE_ISSUE = {
|
||||
id: 123,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import { expect } from "chai";
|
||||
import { MatrixError } from "matrix-bot-sdk";
|
||||
import { BridgeConfigGenericWebhooks, BridgeGenericWebhooksConfigYAML } from "../../src/Config/Config";
|
||||
import { BridgeConfigGenericWebhooks, BridgeGenericWebhooksConfigYAML } from "../../src/config/Config";
|
||||
import { GenericHookConnection, GenericHookConnectionState } from "../../src/Connections/GenericHook";
|
||||
import { MessageSenderClient, IMatrixSendMessage } from "../../src/MatrixSender";
|
||||
import { LocalMQ } from "../../src/MessageQueue/LocalMQ";
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { GitHubRepoConnection, GitHubRepoConnectionState } from "../../src/Connections/GithubRepo"
|
||||
import { GithubInstance } from "../../src/Github/GithubInstance";
|
||||
import { GithubInstance } from "../../src/github/GithubInstance";
|
||||
import { createMessageQueue } from "../../src/MessageQueue";
|
||||
import { UserTokenStore } from "../../src/UserTokenStore";
|
||||
import { DefaultConfig } from "../../src/Config/Defaults";
|
||||
import { DefaultConfig } from "../../src/config/Defaults";
|
||||
import { AppserviceMock } from "../utils/AppserviceMock";
|
||||
import { ApiError, ErrCode, ValidatorApiError } from "../../src/api";
|
||||
import { expect } from "chai";
|
||||
|
@ -4,7 +4,7 @@ import { AppserviceMock } from "../utils/AppserviceMock";
|
||||
import { ApiError, ErrCode, ValidatorApiError } from "../../src/api";
|
||||
import { GitLabRepoConnection, GitLabRepoConnectionState } from "../../src/Connections";
|
||||
import { expect } from "chai";
|
||||
import { BridgeConfigGitLab } from "../../src/Config/Config";
|
||||
import { BridgeConfigGitLab } from "../../src/config/Config";
|
||||
|
||||
const ROOM_ID = "!foo:bar";
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { expect } from "chai";
|
||||
import { GithubInstance } from "../../src/Github/GithubInstance";
|
||||
import { GITHUB_CLOUD_URL } from "../../src/Github/GithubInstance";
|
||||
import { GithubInstance } from "../../src/github/GithubInstance";
|
||||
import { GITHUB_CLOUD_URL } from "../../src/github/GithubInstance";
|
||||
|
||||
describe("GitHub", () => {
|
||||
describe("AdminCommands", () => {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { expect } from "chai";
|
||||
import { BridgeConfig } from "../../src/Config/Config";
|
||||
import { DefaultConfigRoot } from "../../src/Config/Defaults";
|
||||
import { BridgeConfig } from "../../src/config/Config";
|
||||
import { DefaultConfigRoot } from "../../src/config/Defaults";
|
||||
import { FormatUtil } from "../../src/FormatUtil";
|
||||
import { ConfigGrantChecker, GrantChecker, GrantRejectedError } from '../../src/grants/GrantCheck';
|
||||
import { AppserviceMock } from "../utils/AppserviceMock";
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { expect } from "chai";
|
||||
import { generateJiraWebLinkFromIssue } from "../../src/Jira";
|
||||
import { generateJiraWebLinkFromIssue, generateJiraWebLinkFromVersion } from "../../src/jira";
|
||||
|
||||
describe("Jira", () => {
|
||||
describe("Utils", () => {
|
||||
@ -15,5 +15,14 @@ describe("Jira", () => {
|
||||
key: "TEST-111",
|
||||
})).to.equal("https://my-test-jira:9995/browse/TEST-111");
|
||||
});
|
||||
it("processes a jira issue into a URL with a port", () => {
|
||||
expect(generateJiraWebLinkFromVersion({
|
||||
self: "https://my-test-jira:9995/",
|
||||
description: "foo",
|
||||
name: "bar",
|
||||
projectId: "TEST-111",
|
||||
id: "v1.0.0",
|
||||
})).to.equal("https://my-test-jira:9995/projects/TEST-111/versions/v1.0.0");
|
||||
});
|
||||
});
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user