Skip to content

Commit

Permalink
Add GitHub API integration for fetching latest successful Android dem…
Browse files Browse the repository at this point in the history
…o run
  • Loading branch information
cpholguera committed Jan 18, 2025
1 parent 65cbff3 commit 5ca0f9b
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
27 changes: 27 additions & 0 deletions docs/hooks/github_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import requests
import os

GITHUB_REPO = "OWASP/owasp-mastg"
WORKFLOW_FILE = "build-android-demos.yml"

# GitHub API Token for Authentication
GITHUB_TOKEN = os.getenv("GITHUB_TOKEN")
if not GITHUB_TOKEN:
raise ValueError("GITHUB_TOKEN environment variable not set")

# GitHub API headers
HEADERS = {
"Authorization": f"Bearer {GITHUB_TOKEN}",
"Accept": "application/vnd.github+json",
}

def get_latest_successful_run():
url = f"https://api.github.com/repos/{GITHUB_REPO}/actions/workflows/{WORKFLOW_FILE}/runs"
params = {"status": "success", "per_page": 1}
response = requests.get(url, headers=HEADERS, params=params)
response.raise_for_status()
runs = response.json()["workflow_runs"]
if runs:
return f"{runs[0]["html_url"]}#artifacts"
else:
return None
18 changes: 17 additions & 1 deletion docs/hooks/maswe-beta-banner.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import logging
import yaml
import mkdocs.plugins
import glob, os
import glob
from collections import defaultdict
import github_api

log = logging.getLogger('mkdocs')

Expand Down Expand Up @@ -157,6 +158,18 @@ def get_v1_deprecated_tests_banner(meta):
"""
return banner

def get_android_demo_banner(meta):
id = meta.get('id')

artifacts_url = github_api.get_latest_successful_run()

banner = f"""
!!! tip "Demo"
The APK file for this demo is available [here]({artifacts_url}) as "{id}.apk".
"""
return banner

# https://www.mkdocs.org/dev-guide/plugins/#on_page_markdown
@mkdocs.plugins.event_priority(-50)
def on_page_markdown(markdown, page, **kwargs):
Expand All @@ -176,6 +189,9 @@ def on_page_markdown(markdown, page, **kwargs):
if "MASTG/tests/" in path and page.meta.get('status') == 'deprecated':
banners.append(get_v1_deprecated_tests_banner(page.meta))

if "MASTG/demos/android/" in path:
banners.append(get_android_demo_banner(page.meta))

if banners:
markdown = "\n\n".join(banners) + "\n\n" + markdown

Expand Down

0 comments on commit 5ca0f9b

Please # to comment.