diff --git a/saasus_sdk_python/.DS_Store b/saasus_sdk_python/.DS_Store new file mode 100644 index 0000000..cadbfcd Binary files /dev/null and b/saasus_sdk_python/.DS_Store differ diff --git a/saasus_sdk_python/__main__.py b/saasus_sdk_python/__main__.py index ea1c88b..a499d63 100644 --- a/saasus_sdk_python/__main__.py +++ b/saasus_sdk_python/__main__.py @@ -49,7 +49,8 @@ def fastapi_auth(request: Request) -> Union[dict, HTTPException]: auth_header = request.headers.get("Authorization", "") token = auth_header.replace("Bearer ", "") if "Bearer " in auth_header else "" referer = request.headers.get("Referer", "") - user_info, error = auth.authenticate(id_token=token, referer=referer) + x_saasus_trace_id = request.headers.get("X-SaaSus-Trace-Id", "") + user_info, error = auth.authenticate(id_token=token, referer=referer, x_saasus_trace_id=x_saasus_trace_id) if error: raise HTTPException(status_code=401, detail=str(error)) return user_info diff --git a/saasus_sdk_python/client/apilog_client.py b/saasus_sdk_python/client/apilog_client.py index 957c65a..5089300 100644 --- a/saasus_sdk_python/client/apilog_client.py +++ b/saasus_sdk_python/client/apilog_client.py @@ -6,12 +6,13 @@ class SignedApilogApiClient(ApiClient): - def __init__(self, referer=None, x_saasus_referer=None, *args, **kwargs): + def __init__(self, referer=None, x_saasus_referer=None, x_saasus_trace_id=None, *args, **kwargs): super().__init__(*args, **kwargs) self.client = Client() self.configuration.default_headers = {} self.client.referer = referer self.client.x_saasus_referer = x_saasus_referer + self.client.x_saasus_trace_id = x_saasus_trace_id self.base_url = os.getenv("SAASUS_BASE_URL", "https://api.saasus.io/v1") def call_api(self, resource_path, method, diff --git a/saasus_sdk_python/client/auth_client.py b/saasus_sdk_python/client/auth_client.py index 600a11d..7275ac9 100644 --- a/saasus_sdk_python/client/auth_client.py +++ b/saasus_sdk_python/client/auth_client.py @@ -6,10 +6,11 @@ class SignedAuthApiClient(ApiClient): - def __init__(self, referer=None, x_saasus_referer=None, *args, **kwargs): + def __init__(self, referer=None, x_saasus_referer=None, x_saasus_trace_id=None, *args, **kwargs): self.client = Client() self.client.referer = referer self.client.x_saasus_referer = x_saasus_referer + self.client.x_saasus_trace_id = x_saasus_trace_id self.base_url = os.getenv("SAASUS_BASE_URL", "https://api.saasus.io/v1") super().__init__(*args, **kwargs) diff --git a/saasus_sdk_python/client/awsmarketplace_client.py b/saasus_sdk_python/client/awsmarketplace_client.py index dec07e8..490f72e 100644 --- a/saasus_sdk_python/client/awsmarketplace_client.py +++ b/saasus_sdk_python/client/awsmarketplace_client.py @@ -6,12 +6,13 @@ class SignedAwsmarketplaceApiClient(ApiClient): - def __init__(self, referer=None, x_saasus_referer=None, *args, **kwargs): + def __init__(self, referer=None, x_saasus_referer=None, x_saasus_trace_id=None, *args, **kwargs): super().__init__(*args, **kwargs) self.client = Client() self.configuration.default_headers = {} self.client.referer = referer self.client.x_saasus_referer = x_saasus_referer + self.client.x_saasus_trace_id = x_saasus_trace_id self.base_url = os.getenv("SAASUS_BASE_URL", "https://api.saasus.io/v1") def call_api(self, resource_path, method, diff --git a/saasus_sdk_python/client/billing_client.py b/saasus_sdk_python/client/billing_client.py index 2a53344..1f38baf 100644 --- a/saasus_sdk_python/client/billing_client.py +++ b/saasus_sdk_python/client/billing_client.py @@ -6,12 +6,13 @@ class SignedBillingApiClient(ApiClient): - def __init__(self, referer=None, x_saasus_referer=None, *args, **kwargs): + def __init__(self, referer=None, x_saasus_referer=None, x_saasus_trace_id=None, *args, **kwargs): super().__init__(*args, **kwargs) self.client = Client() self.configuration.default_headers = {} self.client.referer = referer self.client.x_saasus_referer = x_saasus_referer + self.client.x_saasus_trace_id = x_saasus_trace_id self.base_url = os.getenv("SAASUS_BASE_URL", "https://api.saasus.io/v1") def call_api(self, resource_path, method, diff --git a/saasus_sdk_python/client/client.py b/saasus_sdk_python/client/client.py index e0c2721..3577189 100644 --- a/saasus_sdk_python/client/client.py +++ b/saasus_sdk_python/client/client.py @@ -26,6 +26,7 @@ def __new__(cls): cls._instance = super().__new__(cls) cls._instance.referer = None cls._instance.x_saasus_referer = None + cls._instance.x_saasus_trace_id = None cls._instance.api_key = os.getenv("SAASUS_API_KEY", "") cls._instance.secret_key = os.getenv("SAASUS_SECRET_KEY", "") cls._instance.saas_id = os.getenv("SAASUS_SAAS_ID", "") @@ -55,4 +56,6 @@ def set_referer_header(self, header_params: dict) -> dict: header_params["Referer"] = self.referer if self.x_saasus_referer: header_params["X-SaaSus-Referer"] = self.x_saasus_referer + if self.x_saasus_trace_id: + header_params["X-SaaSus-Trace-Id"] = self.x_saasus_trace_id return header_params diff --git a/saasus_sdk_python/client/communication_client.py b/saasus_sdk_python/client/communication_client.py index a65bf59..c6eb42f 100644 --- a/saasus_sdk_python/client/communication_client.py +++ b/saasus_sdk_python/client/communication_client.py @@ -6,12 +6,13 @@ class SignedCommunicationApiClient(ApiClient): - def __init__(self, referer=None, x_saasus_referer=None, *args, **kwargs): + def __init__(self, referer=None, x_saasus_referer=None, x_saasus_trace_id=None, *args, **kwargs): super().__init__(*args, **kwargs) self.client = Client() self.configuration.default_headers = {} self.client.referer = referer self.client.x_saasus_referer = x_saasus_referer + self.client.x_saasus_trace_id = x_saasus_trace_id self.base_url = os.getenv("SAASUS_BASE_URL", "https://api.saasus.io/v1") def call_api(self, resource_path, method, diff --git a/saasus_sdk_python/client/integration_client.py b/saasus_sdk_python/client/integration_client.py index 01e04b2..ac0de2e 100644 --- a/saasus_sdk_python/client/integration_client.py +++ b/saasus_sdk_python/client/integration_client.py @@ -6,12 +6,13 @@ class SignedIntegrationApiClient(ApiClient): - def __init__(self, referer=None, x_saasus_referer=None, *args, **kwargs): + def __init__(self, referer=None, x_saasus_referer=None, x_saasus_trace_id=None, *args, **kwargs): super().__init__(*args, **kwargs) self.client = Client() self.configuration.default_headers = {} self.client.referer = referer self.client.x_saasus_referer = x_saasus_referer + self.client.x_saasus_trace_id = x_saasus_trace_id self.base_url = os.getenv("SAASUS_BASE_URL", "https://api.saasus.io/v1") def call_api(self, resource_path, method, diff --git a/saasus_sdk_python/client/pricing_client.py b/saasus_sdk_python/client/pricing_client.py index 2d89c62..d1af430 100644 --- a/saasus_sdk_python/client/pricing_client.py +++ b/saasus_sdk_python/client/pricing_client.py @@ -5,12 +5,13 @@ class SignedPricingApiClient(ApiClient): - def __init__(self, referer=None, x_saasus_referer=None, *args, **kwargs): + def __init__(self, referer=None, x_saasus_referer=None, x_saasus_trace_id=None, *args, **kwargs): super().__init__(*args, **kwargs) self.client = Client() self.configuration.default_headers = {} self.client.referer = referer self.client.x_saasus_referer = x_saasus_referer + self.client.x_saasus_trace_id = x_saasus_trace_id def call_api(self, resource_path, method, path_params=None, query_params=None, header_params=None, diff --git a/saasus_sdk_python/middleware/middleware.py b/saasus_sdk_python/middleware/middleware.py index ab64861..8740b5d 100644 --- a/saasus_sdk_python/middleware/middleware.py +++ b/saasus_sdk_python/middleware/middleware.py @@ -26,12 +26,13 @@ def __init__(self): self.client = Client() self.base_url = os.getenv("SAASUS_BASE_URL", "https://api.saasus.io/v1") - def authenticate(self, id_token: str, referer: str | None = None, x_saasus_referer: str | None = None) -> tuple[None, AuthenticationError] | tuple[UserInfo, None] | tuple[None, ErrorResponse]: # noqa: E501 + def authenticate(self, id_token: str, referer: str | None = None, x_saasus_referer: str | None = None, x_saasus_trace_id: str | None = None) -> tuple[None, AuthenticationError] | tuple[UserInfo, None] | tuple[None, ErrorResponse]: # noqa: E501 if not id_token: return None, AuthenticationError("Invalid Authorization header") self.client.referer = referer self.client.x_saasus_referer = x_saasus_referer + self.client.x_saasus_trace_id = x_saasus_trace_id try: response = self.user_info(id_token) return response, None diff --git a/test/.DS_Store b/test/.DS_Store new file mode 100644 index 0000000..a5a31a9 Binary files /dev/null and b/test/.DS_Store differ