tools/triageHelper/function_app.py (49 lines of code) (raw):

import azure.functions as func import logging import requests import urllib.parse app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS) # this repo is an exception to our labeling system, so we store it in a different variable to detect it later powershell_worker_repo = "Azure/azure-functions-powershell-worker" REPOS = [ "Azure/durabletask", "Azure/azure-functions-durable-extension", "Azure/azure-functions-durable-js", "Azure/azure-functions-durable-python", "Azure/azure-functions-durable-powershell", powershell_worker_repo, "microsoft/durabletask-java", "microsoft/durabletask-dotnet", "microsoft/durabletask-mssql", "microsoft/durabletask-netherite", "microsoft/DurableFunctionsMonitor" ] @app.route(route="triage") def HttpTrigger(req: func.HttpRequest) -> func.HttpResponse: logging.info('Python HTTP trigger function processed a request.') results = [] for repo in REPOS: results.append(get_triage_issues(repo)) report = "\n".join(results) return func.HttpResponse(report) def get_triage_issues(repository): # Define the label label = "Needs: Triage" payload = { 'labels': label, } # Define the GitHub API endpoint api_endpoint = f"https://api.github.com/repos/{repository}/issues" query_str1 = "?labels=Needs%3A%20Triage%20%3Amag%3A" query_str2 = "?labels=Needs%3A%20Triage%20%28Functions%29" query_str = query_str2 if repository == powershell_worker_repo else query_str1 # Send a GET request to the API response = requests.get(api_endpoint + query_str) # Check if the request was successful if response.status_code == 200: # Get the list of issues from the response issues = response.json() # Create an empty string to store the issue information issues_info = "# Repository: " + repository + "\n\n" # Iterate over each issue and append its title and URL to the string for issue in issues: issue_title = issue["title"] issue_url = issue["html_url"] issues_info += f"Issue Title: {issue_title}\n" issues_info += f"Issue URL: {issue_url}\n" issues_info += "------------------------------------\n" return issues_info else: return f"Error: {response.status_code} - {response.text}"