Skip to content

Commit

Permalink
Check status code before getting page ID
Browse files Browse the repository at this point in the history
  • Loading branch information
rossjrw committed Feb 4, 2025
1 parent 5e1e575 commit cdac35f
Showing 1 changed file with 27 additions and 6 deletions.
33 changes: 27 additions & 6 deletions notifier/wikidot.py
Original file line number Diff line number Diff line change
Expand Up @@ -455,14 +455,14 @@ def get_page_id(self, wiki_id: str, slug: str) -> int:
)
)

page = None
page_text = None
for attempt_count in range(self.MODULE_ATTEMPT_LIMIT):
attempt_delay = 2**attempt_count * self.PAGINATION_DELAY_S
will_retry = attempt_count < self.MODULE_ATTEMPT_LIMIT
time.sleep(attempt_delay)
page = self._session.get(page_url).text
response = self._session.get(page_url)

if page.is_wikidot_error():
if response.status_code == 500:
logger.warning(
"Wikibork when getting page %s",
{
Expand All @@ -473,12 +473,33 @@ def get_page_id(self, wiki_id: str, slug: str) -> int:
"will_retry": will_retry,
},
)
if not will_retry:
if will_retry:
continue
raise Wikibork
assert page is not None

if response.status_code != 200:
logger.warning(
"Failed to get page %s",
{
"url": page_url,
"status_code": response.status_code,
"attempt_number": attempt_count + 1,
"attempt_delay_s": attempt_delay,
"max_attempts": self.MODULE_ATTEMPT_LIMIT,
"will_retry": will_retry,
},
)
if will_retry:
continue
raise OngoingConnectionError

page_text = response.text
assert page_text is not None

return int(
cast(Match[str], re.search(r"pageId = ([0-9]+);", page)).group(1)
cast(
Match[str], re.search(r"pageId = ([0-9]+);", page_text)
).group(1)
)

def rename_page(self, wiki_id: str, from_slug: str, to_slug: str) -> None:
Expand Down

0 comments on commit cdac35f

Please sign in to comment.