Skip to content

Commit 0807226

Browse files
authored
Fix subscriber count response handling (#67)
1 parent fd0aefb commit 0807226

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

substack/api.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,10 @@ def get_publication_subscriber_count(self):
346346
f"{self.publication_url}/publication_launch_checklist"
347347
)
348348

349-
return Api._handle_response(response=response)["subscriberCount"]
349+
data = Api._handle_response(response=response)
350+
if "subscriberCount" in data:
351+
return data["subscriberCount"]
352+
return len(data["subscribers"])
350353

351354
def get_published_posts(
352355
self, offset=0, limit=25, order_by="post_date", order_direction="desc"

tests/substack/test_api.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,26 @@ def test_api_exception(self):
4040
with patch("requests.Session.post", return_value=response):
4141
Api(email="", password="")
4242

43+
def test_get_publication_subscriber_count_from_legacy_response(self):
44+
api = Api.__new__(Api)
45+
api.publication_url = "https://writer.substack.com/api/v1"
46+
api._session = Mock()
47+
response = Mock(status_code=200)
48+
response.json.return_value = {"subscriberCount": 123}
49+
api._session.get.return_value = response
50+
51+
self.assertEqual(api.get_publication_subscriber_count(), 123)
52+
53+
def test_get_publication_subscriber_count_from_subscribers(self):
54+
api = Api.__new__(Api)
55+
api.publication_url = "https://writer.substack.com/api/v1"
56+
api._session = Mock()
57+
response = Mock(status_code=200)
58+
response.json.return_value = {"subscribers": [{"id": 1}, {"id": 2}]}
59+
api._session.get.return_value = response
60+
61+
self.assertEqual(api.get_publication_subscriber_count(), 2)
62+
4363
@_e2e
4464
def test_get_posts(self):
4565
api = _api_from_env()

0 commit comments

Comments
 (0)