def _python_identify_repo(self, homepage):
     """Returns code repository dict filled with homepage, if homepage is GH repo
     (None otherwise)
     """
     if parse_gh_repo(homepage):
         return {'url': homepage, 'type': 'git'}
     return None
 def _get_repo_name(self, url):
     """Retrieve GitHub repo from a preceding Mercator scan"""
     parsed = parse_gh_repo(url)
     if not parsed:
         self.log.debug('Could not parse Github repo URL %s', url)
     else:
         self._repo_url = 'https://github.com/' + parsed
     return parsed
def isGhRepo(message, key):
    try:
        val = reduce(lambda m, k: m[k], key if isinstance(key, list) else [key], message)
        if parse_gh_repo(val):
            return True
        else:
            return False
    except:
        return False
    def _get_github_readme(self, url):
        repo_tuple = parse_gh_repo(url)
        project, repo = repo_tuple.split('/')

        for readme_type, extensions in self.README_TYPES.items():
            for extension in extensions:
                if extension:
                    extension = '.' + extension
                url = self._GITHUB_README_PATH.format(project=project,
                                                      repo=repo,
                                                      extension=extension)
                response = requests.get(url)
                if response.status_code != 200:
                    self.log.debug('No README%s found for type "%s" at "%s"',
                                   extension, readme_type, url)
                    continue

                self.log.debug('README%s found for type "%s" at "%s"',
                               extension, readme_type, url)
                return {'type': readme_type, 'content': response.text}
 def _query_repo_name(self):
     """Retrieve GitHub repo from a preceding Mercator scan"""
     # Fridolin: most of the checks can be removed since Dispatcher schedules this task iff we have github.com
     wr = self.parent_task_result('metadata')
     if wr is None:
         self.log.error(
             "No repo_name provided, and no Mercator scan result")
         return None
     code_repos =\
         [m.get("code_repository") for m in wr.get('details', []) if m.get("code_repository")]
     repo_details = code_repos[0] if code_repos else None
     if repo_details is None:
         self.log.debug("No repo_name provided, and no repo metadata found")
         return None
     repo_name = repo_details.get("url")
     if repo_name is None:
         self.log.debug('No repo name extracted, nothing to do')
         return None
     parsed = parse_gh_repo(repo_name)
     if not parsed:
         self.log.debug('Could not parse Github repo URL %s', repo_name)
     else:
         self._repo_url = 'https://github.com/' + parsed
     return parsed
 def test_parse_gh_repo_nok(self, url):
     assert parse_gh_repo(url) is None
 def test_parse_gh_repo_ok(self, url):
     assert parse_gh_repo(url) == 'foo/bar'
 def _get_github_repo_tuple(self):
     repo_url = self.parent_task_result(
         'metadata')['details'][0]['code_repository']['url']
     repo_tuple = parse_gh_repo(repo_url)
     return repo_tuple.split('/')