def execute(self, arguments): """Task code. :param arguments: dictionary with task arguments :return: {}, results """ result_data = {'status': 'unknown', 'summary': [], 'details': {}} # For testing purposes, a repo may be specified at task creation time if self._repo_name is None: # Otherwise, get the repo name from earlier Mercator scan results self._repo_name = self._get_repo_name(arguments['url']) if self._repo_name is None: # Not a GitHub hosted project return result_data repo_url = urljoin(self.configuration.GITHUB_API + "repos/", self._repo_name) try: repo = get_response(repo_url) if not repo: raise NotABugFatalTaskError( 'Page not found on {}'.format(repo_url)) except NotABugTaskError as e: self.log.error(e) raise NotABugFatalTaskError from e result_data['status'] = 'success' issues = {} # Get Repo Statistics notoriety = self._get_repo_stats(repo) if notoriety: issues.update(notoriety) issues['topics'] = repo.get('topics', []) issues['license'] = repo.get('license') or {} # Get Commit Statistics last_year_commits = self._get_last_years_commits(repo['url']) commits = { 'last_year_commits': { 'sum': sum(last_year_commits), 'weekly': last_year_commits } } t_stamp = datetime.datetime.utcnow() refreshed_on = {'updated_on': t_stamp.strftime("%Y-%m-%d %H:%M:%S")} issues.update(refreshed_on) issues.update(commits) # Get PR/Issue details for previous Month and Year gh_pr_issue_details = get_gh_pr_issue_counts(repo['full_name']) issues.update(gh_pr_issue_details) result_data['details'] = issues return result_data
def execute(self, arguments): """Task code. :param arguments: dictionary with task arguments :return: {}, results """ result_data = {'status': 'unknown', 'summary': [], 'details': {}} if arguments['ecosystem'] == 'golang': go_obj = GolangUtils(arguments.get('name')) url = go_obj.get_gh_link() if url: arguments['url'] = url else: return result_data # For testing purposes, a repo may be specified at task creation time if self._repo_name is None: # Otherwise, get the repo name from URL self._repo_name = self._get_repo_name(arguments['url']) if self._repo_name is None: # Not a GitHub hosted project return result_data repo_url = urljoin(self.configuration.GITHUB_API + "repos/", self._repo_name) repo = {} try: repo = get_response(repo_url) if not repo: raise NotABugFatalTaskError( 'Page not found on {}'.format(repo_url)) except NotABugTaskError as e: logger.error(e) result_data['status'] = 'success' issues = {} # Get Repo Statistics notoriety = self._get_repo_stats(repo) if notoriety: issues.update(notoriety) issues['topics'] = repo.get('topics', []) issues['license'] = repo.get('license') or {} # Get Commit Statistics last_year_commits = self._get_last_years_commits(repo.get('url', '')) commits = { 'last_year_commits': { 'sum': sum(last_year_commits), 'weekly': last_year_commits } } t_stamp = datetime.datetime.utcnow() refreshed_on = {'updated_on': t_stamp.strftime("%Y-%m-%d %H:%M:%S")} issues.update(refreshed_on) issues.update(commits) # Get PR/Issue details for previous Month and Year gh_pr_issue_details = get_gh_pr_issue_counts(self._repo_name) issues.update(gh_pr_issue_details) result_data['details'] = issues # Store github details for being used in Data-Importer store_data_to_s3(arguments, StoragePool.get_connected_storage('S3GitHub'), result_data) return result_data