From 8f53312f691654670430d502b4f22be78a8e0500 Mon Sep 17 00:00:00 2001 From: aviau Date: Sun, 8 Feb 2026 20:31:13 -0500 Subject: [PATCH] docs: use limiter in examples --- docs/concepts/paging.mdx | 13 ++++++++----- docs/guides/cookie-monitoring.mdx | 9 +++++---- docs/guides/credentials-export-domain.mdx | 6 ++++-- docs/guides/global-search.mdx | 11 ++++++----- docs/guides/tenant-credentials.mdx | 7 ++++--- docs/guides/tenant-events.mdx | 10 ++++++---- docs/guides/update-identifiers.mdx | 23 ++++++++++------------- docs/sdk/python.mdx | 6 ++++-- 8 files changed, 47 insertions(+), 38 deletions(-) diff --git a/docs/concepts/paging.mdx b/docs/concepts/paging.mdx index f798291..7abcf97 100644 --- a/docs/concepts/paging.mdx +++ b/docs/concepts/paging.mdx @@ -68,9 +68,9 @@ These are end-to-end examples in various programming languages. ```python import os -import time from flareio import FlareApiClient +from flareio.ratelimit import Limiter api_key = os.environ.get("FLARE_API_KEY") @@ -79,6 +79,8 @@ if not api_key: api_client = FlareApiClient(api_key=api_key) +limiter_default = Limiter.from_seconds(0.25) + last_from: str | None = None fetched_pages: int = 0 @@ -90,7 +92,7 @@ for resp in api_client.scroll( }, ): # Rate limiting (default). - time.sleep(0.25) + limiter_default.tick() # Get results from the response resp_data = resp.json() @@ -109,9 +111,9 @@ print("The last value for 'next' was", last_from) ```python import os -import time from flareio import FlareApiClient +from flareio.ratelimit import Limiter api_key = os.environ.get("FLARE_API_KEY") @@ -120,12 +122,13 @@ if not api_key: api_client = FlareApiClient(api_key=api_key) +limiter_default = Limiter.from_seconds(0.25) + from_: str | None = None fetched_pages: int = 0 while True: - # Rate limiting (default). - time.sleep(0.25) + limiter_default.tick() params: dict = {} if from_: diff --git a/docs/guides/cookie-monitoring.mdx b/docs/guides/cookie-monitoring.mdx index 90da50c..0702d19 100644 --- a/docs/guides/cookie-monitoring.mdx +++ b/docs/guides/cookie-monitoring.mdx @@ -56,16 +56,18 @@ This is an end-to-end example in Python. ```python import json -import time from datetime import datetime from datetime import timedelta from datetime import timezone from flareio import FlareApiClient +from flareio.ratelimit import Limiter api_client = FlareApiClient.from_env() +limiter_default = Limiter.from_seconds(0.25) + last_from: str | None = None fetched_pages: int = 0 fetch_full_event: bool = False @@ -86,8 +88,7 @@ for resp in api_client.scroll( ).isoformat(), }, ): - # Rate limiting (default). - time.sleep(0.25) + limiter_default.tick() resp_data: dict = resp.json() @@ -105,7 +106,7 @@ for resp in api_client.scroll( # Optionally fetch more information about how it was leaked... if fetch_full_event: - time.sleep(0.2) + limiter_default.tick() full_event = api_client.get( url="/firework/v2/activities/", params={ diff --git a/docs/guides/credentials-export-domain.mdx b/docs/guides/credentials-export-domain.mdx index dc8a7c1..0163c42 100644 --- a/docs/guides/credentials-export-domain.mdx +++ b/docs/guides/credentials-export-domain.mdx @@ -44,13 +44,15 @@ These are end-to-end examples in various programming languages. ```python import csv import sys -import time from flareio import FlareApiClient +from flareio.ratelimit import Limiter api_client = FlareApiClient.from_env() +limiter = Limiter.from_seconds(0.25) + # The cursor from which we are starting the current execution. last_from: str | None = None @@ -89,7 +91,7 @@ for resp in api_client.scroll( last_from = resp.json().get("next") or last_from # Rate limiting. - time.sleep(0.25) + limiter.tick() print(f"The next execution could resume using {last_from=}.") ``` diff --git a/docs/guides/global-search.mdx b/docs/guides/global-search.mdx index 167a086..0acf84a 100644 --- a/docs/guides/global-search.mdx +++ b/docs/guides/global-search.mdx @@ -52,13 +52,16 @@ These are end-to-end examples in various programming languages. ```python import datetime -import time from flareio import FlareApiClient +from flareio.ratelimit import Limiter api_client = FlareApiClient.from_env() +limiter_search = Limiter.from_seconds(1) +limiter_default = Limiter.from_seconds(0.25) + from_timestamp: str = ( datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(hours=1) ).isoformat() @@ -83,8 +86,7 @@ for resp in api_client.scroll( }, }, ): - # Rate limiting (search). - time.sleep(1) + limiter_search.tick() resp_data: dict = resp.json() items: list[dict] = resp_data["items"] @@ -97,8 +99,7 @@ for resp in api_client.scroll( # (Optional): Get the full data for item in items: - # Rate limiting (default). - time.sleep(0.25) + limiter_default.tick() event_response = api_client.get( url="/firework/v2/activities/", diff --git a/docs/guides/tenant-credentials.mdx b/docs/guides/tenant-credentials.mdx index 9fc2a64..a398a9e 100644 --- a/docs/guides/tenant-credentials.mdx +++ b/docs/guides/tenant-credentials.mdx @@ -22,13 +22,14 @@ These are end-to-end examples in various programming languages. ```python -import time - from flareio import FlareApiClient +from flareio.ratelimit import Limiter api_client = FlareApiClient.from_env() +limiter = Limiter.from_seconds(1) + last_from: str | None = None fetched_pages: int = 0 @@ -41,7 +42,7 @@ for resp in api_client.scroll( }, ): # Rate limiting. - time.sleep(1) + limiter.tick() resp_data: dict = resp.json() diff --git a/docs/guides/tenant-events.mdx b/docs/guides/tenant-events.mdx index bf96fb8..067ee95 100644 --- a/docs/guides/tenant-events.mdx +++ b/docs/guides/tenant-events.mdx @@ -100,10 +100,14 @@ These are end-to-end examples in various programming languages. import time from flareio import FlareApiClient +from flareio.ratelimit import Limiter api_client = FlareApiClient.from_env() +limiter_search = Limiter.from_seconds(1) +limiter_default = Limiter.from_seconds(0.25) + last_from: str | None = None fetched_pages: int = 0 @@ -114,8 +118,7 @@ for resp in api_client.scroll( "from": last_from, }, ): - # Rate limiting (search). - time.sleep(1) + limiter_search.tick() resp_data: dict = resp.json() @@ -128,8 +131,7 @@ for resp in api_client.scroll( # (Optional): Get the full data for item in resp_data["items"]: - # Rate limiting (default). - time.sleep(0.25) + limiter_default.tick() event_response = api_client.get( url="/firework/v2/activities/", diff --git a/docs/guides/update-identifiers.mdx b/docs/guides/update-identifiers.mdx index c0eb30b..9f5d310 100644 --- a/docs/guides/update-identifiers.mdx +++ b/docs/guides/update-identifiers.mdx @@ -33,35 +33,32 @@ This guide covers how to list identifiers, retrieve a specific identifier by ID, ```python -import time - from flareio import FlareApiClient +from flareio.ratelimit import Limiter + api_client = FlareApiClient.from_env() +limiter_default = Limiter.from_seconds(0.25) + # 1. List all identifiers for resp in api_client.scroll( method="GET", url="/firework/v3/identifiers/", ): - # Rate limiting (default). - time.sleep(0.25) + limiter_default.tick() - data = resp.json() - items = data.get("items", []) - - for item in items: - # Rate limiting (default). - time.sleep(0.25) + for item in resp.json()["items"]: + limiter_default.tick() - identifier_id = item.get("id") + identifier_id = item["id"] # 2. Get the full identifier by ID identifier_resp = api_client.get(f"/firework/v3/identifiers/{identifier_id}") - identifier = identifier_resp.json().get("identifier") + identifier = identifier_resp.json()["identifier"] # Rate limiting (default). - time.sleep(0.25) + limiter_default.tick() # 3. Do the necessary updates to the identifier api_client.put( diff --git a/docs/sdk/python.mdx b/docs/sdk/python.mdx index d07a50b..614d3de 100644 --- a/docs/sdk/python.mdx +++ b/docs/sdk/python.mdx @@ -65,9 +65,9 @@ The `FlareApiClient` has a `scroll` method that can be used with endpoints that ```python Paging Util - Generic Example import os -import time from flareio import FlareApiClient +from flareio.ratelimit import Limiter api_key = os.environ.get("FLARE_API_KEY") @@ -76,6 +76,8 @@ if not api_key: api_client = FlareApiClient(api_key=api_key) +limiter = Limiter.from_seconds(0.25) + last_from: str | None = None fetched_pages: int = 0 @@ -87,7 +89,7 @@ for resp in api_client.scroll( }, ): # Rate limiting (default). - time.sleep(0.25) + limiter.tick() # Get results from the response resp_data = resp.json()