Add Jira Server connector form (#1046)

This commit is contained in:
George 2024-02-20 00:17:36 +02:00 committed by GitHub
parent c1d1651b43
commit 54fb7792c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 48 additions and 11 deletions

View File

@ -103,9 +103,15 @@ class JiraConnector(LoadConnector, PollConnector):
self.jira_client: JIRA | None = None
def load_credentials(self, credentials: dict[str, Any]) -> dict[str, Any] | None:
email = credentials["jira_user_email"]
api_token = credentials["jira_api_token"]
self.jira_client = JIRA(basic_auth=(email, api_token), server=self.jira_base)
# if user provide an email we assume it's cloud
if "jira_user_email" in credentials:
email = credentials["jira_user_email"]
self.jira_client = JIRA(
basic_auth=(email, api_token), server=self.jira_base
)
else:
self.jira_client = JIRA(token_auth=api_token, server=self.jira_base)
return None
def load_from_state(self) -> GenerateDocumentsOutput:

View File

@ -8,6 +8,7 @@ import { CredentialForm } from "@/components/admin/connectors/CredentialForm";
import {
JiraConfig,
JiraCredentialJson,
JiraServerCredentialJson,
ConnectorIndexingStatus,
} from "@/lib/types";
import useSWR, { useSWRConfig } from "swr";
@ -71,7 +72,7 @@ const Main = () => {
const jiraConnectorIndexingStatuses: ConnectorIndexingStatus<
JiraConfig,
JiraCredentialJson
JiraCredentialJson | JiraServerCredentialJson
>[] = connectorIndexingStatuses.filter(
(connectorIndexingStatus) =>
connectorIndexingStatus.connector.source === "jira"
@ -90,12 +91,6 @@ const Main = () => {
{jiraCredential ? (
<>
<div className="flex mb-1 text-sm">
{/* <div className="flex">
<p className="my-auto">Existing Username: </p>
<p className="ml-1 italic my-auto max-w-md truncate">
{confluenceCredential.credential_json?.confluence_username}
</p>{" "}
</div> */}
<p className="my-auto">Existing Access Token: </p>
<p className="ml-1 italic my-auto max-w-md truncate">
{jiraCredential.credential_json?.jira_api_token}
@ -142,8 +137,10 @@ const Main = () => {
>
here
</a>{" "}
to generate an Access Token.
to generate an Access Token (for cloud) or Personal Access Token
(for server). Submit only one form.
</Text>
<Title className="mb-2 mt-6 ml-auto mr-auto">Cloud</Title>
<Card className="mt-4">
<CredentialForm<JiraCredentialJson>
formBody={
@ -175,6 +172,33 @@ const Main = () => {
}}
/>
</Card>
<Title className="mb-2 mt-6 ml-auto mr-auto">Server</Title>
<Card className="mt-4">
<CredentialForm<JiraServerCredentialJson>
formBody={
<>
<TextFormField
name="jira_api_token"
label="Personal Access Token:"
type="password"
/>
</>
}
validationSchema={Yup.object().shape({
jira_api_token: Yup.string().required(
"Please enter your Jira personal access token"
),
})}
initialValues={{
jira_api_token: "",
}}
onSubmit={(isSuccess) => {
if (isSuccess) {
refreshCredentials();
}
}}
/>
</Card>
</>
)}
@ -202,7 +226,10 @@ const Main = () => {
below every <b>10</b> minutes.
</Text>
<div className="mb-2">
<ConnectorsTable<JiraConfig, JiraCredentialJson>
<ConnectorsTable<
JiraConfig,
JiraCredentialJson | JiraServerCredentialJson
>
connectorIndexingStatuses={jiraConnectorIndexingStatuses}
liveCredential={jiraCredential}
getCredential={(credential) => {

View File

@ -235,6 +235,10 @@ export interface JiraCredentialJson {
jira_api_token: string;
}
export interface JiraServerCredentialJson {
jira_api_token: string;
}
export interface ProductboardCredentialJson {
productboard_access_token: string;
}