Skip to content

Commit

Permalink
Add empty/malformed yaml handling
Browse files Browse the repository at this point in the history
  • Loading branch information
arkid15r committed Sep 20, 2024
1 parent 8a56e06 commit f45d896
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions backend/apps/owasp/models/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,23 @@ def owasp_url(self):

def from_github(self, field_mapping, repository):
"""Update instance based on GitHub repository data."""
# Fetch project metadata from index.md file.
project_metadata = {}

index_md_content = get_repository_file_content(
self.get_index_md_raw_url(repository=repository)
)
yaml_content = re.search(r"^---\n(.*?)\n---", index_md_content, re.DOTALL)
project_metadata = yaml.safe_load(yaml_content.group(1)) or {} if yaml_content else {}

# Direct fields.
for model_field, gh_field in field_mapping.items():
value = project_metadata.get(gh_field)
if value:
setattr(self, model_field, value)
# Fetch project metadata from index.md file.
try:
yaml_content = re.search(r"^---\n(.*?)\n---", index_md_content, re.DOTALL)
project_metadata = yaml.safe_load(yaml_content.group(1)) or {} if yaml_content else {}

# Direct fields.
for model_field, gh_field in field_mapping.items():
value = project_metadata.get(gh_field)
if value:
setattr(self, model_field, value)
except (AttributeError, yaml.scanner.ScannerError):
logger.exception("Unable to parse metadata", extra={"repository": repository.name})

return project_metadata

Expand Down

0 comments on commit f45d896

Please sign in to comment.