(self, event)
| 39 | return True |
| 40 | |
| 41 | async def handle_event(self, event): |
| 42 | # handle github profile |
| 43 | if event.type == "SOCIAL": |
| 44 | user = event.data.get("profile_name", "") |
| 45 | in_scope = False |
| 46 | if "github-org-member" in event.tags: |
| 47 | is_org = False |
| 48 | elif "github-org" in event.tags: |
| 49 | is_org = True |
| 50 | in_scope = True |
| 51 | else: |
| 52 | is_org, in_scope = await self.validate_org(user) |
| 53 | |
| 54 | # find repos from user/org (SOCIAL --> CODE_REPOSITORY) |
| 55 | repos = [] |
| 56 | if is_org: |
| 57 | if in_scope: |
| 58 | self.verbose(f"Searching for repos belonging to organization {user}") |
| 59 | repos = await self.query_org_repos(user) |
| 60 | else: |
| 61 | self.verbose(f"Organization {user} does not appear to be in-scope") |
| 62 | elif "github-org-member" in event.tags: |
| 63 | self.verbose(f"Searching for repos belonging to user {user}") |
| 64 | repos = await self.query_user_repos(user) |
| 65 | for repo_url in repos: |
| 66 | repo_event = self.make_event({"url": repo_url}, "CODE_REPOSITORY", tags="git", parent=event) |
| 67 | if not repo_event: |
| 68 | continue |
| 69 | await self.emit_event( |
| 70 | repo_event, |
| 71 | context=f"{{module}} listed repos for GitHub profile and discovered {{event.type}}: {repo_url}", |
| 72 | ) |
| 73 | |
| 74 | # find members from org (SOCIAL --> SOCIAL) |
| 75 | if is_org and self.include_members: |
| 76 | self.verbose(f"Searching for any members belonging to {user}") |
| 77 | org_members = await self.query_org_members(user) |
| 78 | for member in org_members: |
| 79 | member_url = f"https://github.com/{member}" |
| 80 | event_data = {"platform": "github", "profile_name": member, "url": member_url} |
| 81 | member_event = self.make_event(event_data, "SOCIAL", tags="github-org-member", parent=event) |
| 82 | if member_event: |
| 83 | await self.emit_event( |
| 84 | member_event, |
| 85 | context=f"{{module}} listed members of GitHub organization and discovered {{event.type}}: {member_url}", |
| 86 | ) |
| 87 | |
| 88 | # find valid orgs from stub (ORG_STUB --> SOCIAL) |
| 89 | elif event.type == "ORG_STUB": |
| 90 | user = event.data |
| 91 | self.verbose(f"Validating whether the organization {user} is within our scope...") |
| 92 | is_org, in_scope = await self.validate_org(user) |
| 93 | if "target" in event.tags: |
| 94 | in_scope = True |
| 95 | if not is_org or not in_scope: |
| 96 | self.verbose(f"Unable to validate that {user} is in-scope, skipping...") |
| 97 | return |
| 98 |
nothing calls this directly
no test coverage detected