Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions examples/sample_token_generate_refresh.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ def _usage():

print("Generating Token")
try:
# Always use .do_not_generate_tokens_for_opted_out(), which applies policy=1. Support for policy=0 will be removed soon.
token_generate_response = publisher_client.generate_token(TokenGenerateInput.from_email("testpythonsdksampletokengenerate@email.com").do_not_generate_tokens_for_opted_out())
token_generate_response = publisher_client.generate_token(TokenGenerateInput.from_email("testpythonsdksampletokengenerate@email.com"))
except Exception as e:
print(e)
# decide how to handle exception
Expand Down
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ classifiers = [
requires-python = ">=3.8"
dependencies = [
"pycryptodome",
"bitarray"
"bitarray",
"typing-extensions>=4.5.0"
]

[project.optional-dependencies]
Expand Down
6 changes: 3 additions & 3 deletions tests/test_doc_sample_code.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,14 @@ def test_publisher_basic_usage_example(self):
client = Uid2PublisherClient(self.UID2_BASE_URL, self.UID2_API_KEY, self.UID2_SECRET_KEY)

# Documentation sdk-ref-python.md Line 147: Generate token from email
token_generate_response = client.generate_token(TokenGenerateInput.from_email("user@example.com").do_not_generate_tokens_for_opted_out())
token_generate_response = client.generate_token(TokenGenerateInput.from_email("user@example.com"))

self.assertIsNotNone(token_generate_response)

def test_publisher_client_server_integration_example(self):
"""Test Publisher client-server integration from documentation"""
client = Uid2PublisherClient(self.UID2_BASE_URL, self.UID2_API_KEY, self.UID2_SECRET_KEY)
token_generate_response = client.generate_token(TokenGenerateInput.from_email("user@example.com").do_not_generate_tokens_for_opted_out())
token_generate_response = client.generate_token(TokenGenerateInput.from_email("user@example.com"))

# Documentation sdk-ref-python.md Line 165: Get identity JSON string
identity_json_string = token_generate_response.get_identity_json_string()
Expand All @@ -66,7 +66,7 @@ def test_publisher_client_server_integration_example(self):
def test_publisher_server_side_integration_example(self):
"""Test Publisher server-side integration from documentation"""
client = Uid2PublisherClient(self.UID2_BASE_URL, self.UID2_API_KEY, self.UID2_SECRET_KEY)
token_generate_response = client.generate_token(TokenGenerateInput.from_email(self.mapped_email).do_not_generate_tokens_for_opted_out())
token_generate_response = client.generate_token(TokenGenerateInput.from_email(self.mapped_email))

# Documentation sdk-ref-python.md Line 176: Store identity JSON string
identity_json_string = token_generate_response.get_identity_json_string()
Expand Down
25 changes: 9 additions & 16 deletions uid2_client/token_generate_input.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import json
from typing_extensions import deprecated
from .identity_type import IdentityType
from .input_util import *

Expand All @@ -9,7 +10,6 @@ def __init__(self, identity_type, email_or_phone, need_hash, already_hashed):
self.email_or_phone = email_or_phone
self.need_hash = need_hash
self.already_hashed = already_hashed
self.generate_for_opted_out = True
self.transparency_and_consent_string = None

@staticmethod
Expand All @@ -36,9 +36,8 @@ def do_not_hash(self):
self.need_hash = False
return self

# Always use .do_not_generate_tokens_for_opted_out(), which applies policy=1. Support for policy=0 will be removed soon.
@deprecated("The optout_check/policy parameter has been removed from /token/generate")
def do_not_generate_tokens_for_opted_out(self):
self.generate_for_opted_out = False
return self

def get_as_json_string(self):
Expand All @@ -52,18 +51,16 @@ def get_as_json_string(self):
def create_json_request_for_generate_token(self):
property = "email" if self.identity_type == IdentityType.Email else "phone"
return self._create_json_request_for_generate_token(property, self.email_or_phone,
self.transparency_and_consent_string,
self.generate_for_opted_out)
self.transparency_and_consent_string)

@staticmethod
def _create_json_request_for_generate_token(property, value, tc_string, generate_for_opted_out):
def _create_json_request_for_generate_token(property, value, tc_string):
json_object = {
property: value
}
if tc_string is not None:
json_object["tcf_consent_string"] = tc_string
if not generate_for_opted_out:
json_object["policy"] = 1

return json.dumps(json_object)

def create_hashed_json_request_for_generate_token(self):
Expand All @@ -75,22 +72,18 @@ def create_hashed_json_request_for_generate_token(self):
raise ValueError("invalid email address")
hashed_normalized_email = get_base64_encoded_hash(normalized_email)
return self._create_json_request_for_generate_token("email_hash", hashed_normalized_email,
self.transparency_and_consent_string,
self.generate_for_opted_out)
self.transparency_and_consent_string)
else: # phone
if not is_phone_number_normalized(self.email_or_phone):
raise ValueError("phone number is not normalized")
hashed_normalized_phone = get_base64_encoded_hash(self.email_or_phone)
return self._create_json_request_for_generate_token("phone_hash", hashed_normalized_phone,
self.transparency_and_consent_string,
self.generate_for_opted_out)
self.transparency_and_consent_string)

def create_already_hashed_json_request_for_generate_token(self):
if self.identity_type == IdentityType.Email:
return self._create_json_request_for_generate_token("email_hash", self.email_or_phone,
self.transparency_and_consent_string,
self.generate_for_opted_out)
self.transparency_and_consent_string)
else: # phone
return self._create_json_request_for_generate_token("phone_hash", self.email_or_phone,
self.transparency_and_consent_string,
self.generate_for_opted_out)
self.transparency_and_consent_string)
Loading