Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if not response.json_content:
logger.debug(response.content)
raise PagureAPIException("Error while decoding JSON: {0}")
if not response.ok:
logger.error(response.json_content)
if "error" in response.json_content:
error_msg = response.json_content["error"]
error_msg_ext = response.json_content.get("errors", "")
msg = f"Pagure API returned an error when calling '{url}': {error_msg}"
if error_msg_ext:
msg += f" - {error_msg_ext}"
raise PagureAPIException(
msg, pagure_error=error_msg, pagure_response=response.json_content,
)
raise PagureAPIException(f"Problem with Pagure API when calling '{url}'")
return response.json_content
pagure_error=error_msg,
)
if not response.json_content:
logger.debug(response.content)
raise PagureAPIException("Error while decoding JSON: {0}")
if not response.ok:
logger.error(response.json_content)
if "error" in response.json_content:
error_msg = response.json_content["error"]
error_msg_ext = response.json_content.get("errors", "")
msg = f"Pagure API returned an error when calling '{url}': {error_msg}"
if error_msg_ext:
msg += f" - {error_msg_ext}"
raise PagureAPIException(
msg, pagure_error=error_msg, pagure_response=response.json_content,
)
raise PagureAPIException(f"Problem with Pagure API when calling '{url}'")
return response.json_content
def update_info(
self, title: Optional[str] = None, description: Optional[str] = None
) -> "PullRequest":
try:
data = {"title": title if title else self.title}
if description:
data["initial_comment"] = description
updated_pr = self.__call_api(method="POST", data=data)
logger.info("PR updated.")
self._raw_pr = updated_pr
return self
except Exception as ex:
raise PagureAPIException("there was an error while updating the PR", ex)
def __update_info(
self, title: Optional[str] = None, description: Optional[str] = None
) -> None:
try:
data = {
"title": title if title is not None else self.title,
"issue_content": description
if description is not None
else self.description,
}
updated_issue = self.project._call_project_api("issue", str(self.id), method="POST", data=data)
self._raw_issue = updated_issue["issue"]
except Exception as ex:
raise PagureAPIException("there was an error while updating the issue", ex)
def get_sha_from_tag(self, tag_name: str) -> str:
tags_dict = self.get_tags_dict()
if tag_name not in tags_dict:
raise PagureAPIException(f"Tag '{tag_name}' not found.")
return tags_dict[tag_name].commit_sha
def call_api(
self, url: str, method: str = None, params: dict = None, data=None
) -> dict:
""" Method used to call the API.
It returns the raw JSON returned by the API or raises an exception
if something goes wrong.
"""
response = self.call_api_raw(url=url, method=method, params=params, data=data)
if response.status_code == 404:
error_msg = (
response.json_content["error"]
if response.json_content and "error" in response.json_content
else None
)
raise PagureAPIException(
f"Page '{url}' not found when calling Pagure API.",
pagure_error=error_msg,
)
if not response.json_content:
logger.debug(response.content)
raise PagureAPIException("Error while decoding JSON: {0}")
if not response.ok:
logger.error(response.json_content)
if "error" in response.json_content:
error_msg = response.json_content["error"]
error_msg_ext = response.json_content.get("errors", "")
msg = f"Pagure API returned an error when calling '{url}': {error_msg}"
if error_msg_ext:
msg += f" - {error_msg_ext}"
def call_api_raw(
self, url: str, method: str = None, params: dict = None, data=None
):
method = method or "GET"
try:
response = self.get_raw_request(
method=method, url=url, params=params, data=data
)
except requests.exceptions.ConnectionError as er:
logger.error(er)
raise PagureAPIException(f"Cannot connect to url: '{url}'.", er)
return response