Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F6930311
D4863.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
D4863.diff
View Options
diff --git a/swh/lister/phabricator/lister.py b/swh/lister/phabricator/lister.py
--- a/swh/lister/phabricator/lister.py
+++ b/swh/lister/phabricator/lister.py
@@ -5,6 +5,7 @@
import logging
import random
from typing import Any, Dict, Iterator, List, Optional
+from urllib.parse import urljoin
import requests
@@ -20,7 +21,18 @@
class PhabricatorLister(StatelessLister[PageType]):
+ """
+ List all repositories hosted on a Phabricator instance.
+
+ Args:
+ url: base URL of a phabricator forge
+ (for instance https://forge.softwareheritage.org)
+ instance: string identifier for the listed forge
+ api_token: authentication token for Conduit API
+ """
+
LISTER_NAME = "phabricator"
+ API_REPOSITORY_PATH = "/api/diffusion.repository.search"
def __init__(
self,
@@ -30,7 +42,9 @@
api_token: Optional[str] = None,
credentials: CredentialsType = None,
):
- super().__init__(scheduler, url, instance, credentials)
+ super().__init__(
+ scheduler, urljoin(url, self.API_REPOSITORY_PATH), instance, credentials
+ )
self.session = requests.Session()
self.session.headers.update(
diff --git a/swh/lister/phabricator/tests/test_lister.py b/swh/lister/phabricator/tests/test_lister.py
--- a/swh/lister/phabricator/tests/test_lister.py
+++ b/swh/lister/phabricator/tests/test_lister.py
@@ -6,7 +6,7 @@
import importlib.resources
import json
-from swh.lister.phabricator.lister import get_repo_url
+from swh.lister.phabricator.lister import PhabricatorLister, get_repo_url
def test_get_repo_url():
@@ -27,3 +27,23 @@
repo = json.load(f)
expected_name = "https://svn.blender.org/svnroot/bf-blender/"
assert get_repo_url(repo["attachments"]["uris"]["uris"]) == expected_name
+
+
+def test_lister_url_param(swh_scheduler):
+ FORGE_BASE_URL = "https://forge.softwareheritage.org"
+ API_REPOSITORY_PATH = "/api/diffusion.repository.search"
+
+ for url in (
+ FORGE_BASE_URL,
+ f"{FORGE_BASE_URL}/",
+ f"{FORGE_BASE_URL}/{API_REPOSITORY_PATH}",
+ f"{FORGE_BASE_URL}/{API_REPOSITORY_PATH}/",
+ ):
+
+ lister = PhabricatorLister(
+ scheduler=swh_scheduler, url=FORGE_BASE_URL, instance="swh", api_token="foo"
+ )
+
+ expected_url = f"{FORGE_BASE_URL}{API_REPOSITORY_PATH}"
+
+ assert lister.url == expected_url
diff --git a/swh/lister/phabricator/tests/test_tasks.py b/swh/lister/phabricator/tests/test_tasks.py
--- a/swh/lister/phabricator/tests/test_tasks.py
+++ b/swh/lister/phabricator/tests/test_tasks.py
@@ -25,7 +25,7 @@
lister.run.return_value = lister_stats
task_params = {
- "url": "https://forge.softwareheritage.org/api/diffusion.repository.search",
+ "url": "https://forge.softwareheritage.org",
"instance": "swh",
"api_token": None,
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Jul 27 2024, 11:30 AM (11 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3224192
Attached To
D4863: phabricator: Allow to pass forge base URL as lister parameter
Event Timeline
Log In to Comment