Merge pull request #525 from CREDO23/refactor/jira-connector-migrate-tot-rest-v3

[Refactor] Jira Connector | Migrate to atlassian rest api v3
This commit is contained in:
Rohan Verma 2025-12-05 12:14:46 -08:00 committed by GitHub
commit 601489bec2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -92,7 +92,11 @@ class JiraConnector:
} }
def make_api_request( def make_api_request(
self, endpoint: str, params: dict[str, Any] | None = None self,
endpoint: str,
params: dict[str, Any] | None = None,
method: str = "GET",
json_payload: dict[str, Any] | None = None,
) -> dict[str, Any]: ) -> dict[str, Any]:
""" """
Make a request to the Jira API. Make a request to the Jira API.
@ -116,7 +120,12 @@ class JiraConnector:
url = f"{self.base_url}/rest/api/{self.api_version}/{endpoint}" url = f"{self.base_url}/rest/api/{self.api_version}/{endpoint}"
headers = self.get_headers() headers = self.get_headers()
response = requests.get(url, headers=headers, params=params, timeout=500) if method.upper() == "POST":
response = requests.post(
url, headers=headers, json=json_payload, timeout=500
)
else:
response = requests.get(url, headers=headers, params=params, timeout=500)
if response.status_code == 200: if response.status_code == 200:
return response.json() return response.json()
@ -169,19 +178,23 @@ class JiraConnector:
"project", "project",
] ]
params = { all_issues = []
"jql": jql, start_at = 0
"fields": ",".join(fields), max_results = 100
"maxResults": 100,
"startAt": 0,
}
all_issues = [] all_issues = []
start_at = 0 start_at = 0
while True: while True:
params["startAt"] = start_at json_payload = {
result = self.make_api_request("search", params) "jql": jql,
"fields": fields, # API accepts list
"maxResults": max_results,
"startAt": start_at,
}
result = self.make_api_request(
"search/jql", json_payload=json_payload, method="POST"
)
if not isinstance(result, dict) or "issues" not in result: if not isinstance(result, dict) or "issues" not in result:
raise Exception("Invalid response from Jira API") raise Exception("Invalid response from Jira API")
@ -226,9 +239,9 @@ class JiraConnector:
) )
# TODO : This JQL needs some improvement to work as expected # TODO : This JQL needs some improvement to work as expected
_jql = f"{date_filter}" jql = f"{date_filter}"
if project_key: if project_key:
_jql = ( jql = (
f'project = "{project_key}" AND {date_filter} ORDER BY created DESC' f'project = "{project_key}" AND {date_filter} ORDER BY created DESC'
) )
@ -250,7 +263,7 @@ class JiraConnector:
fields.append("comment") fields.append("comment")
params = { params = {
# "jql": "", TODO : Add a JQL query to filter from a date range "jql": jql,
"fields": ",".join(fields), "fields": ",".join(fields),
"maxResults": 100, "maxResults": 100,
"startAt": 0, "startAt": 0,
@ -262,7 +275,7 @@ class JiraConnector:
while True: while True:
params["startAt"] = start_at params["startAt"] = start_at
result = self.make_api_request("search", params) result = self.make_api_request("search/jql", params)
if not isinstance(result, dict) or "issues" not in result: if not isinstance(result, dict) or "issues" not in result:
return [], "Invalid response from Jira API" return [], "Invalid response from Jira API"