Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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
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
Expand Up @@ -9,7 +9,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 +35,9 @@ 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.
def do_not_generate_tokens_for_opted_out(self):
self.generate_for_opted_out = False
# DEPRECATED: The optout_check/policy param has been removed from /token/generate
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The official @deprecated decorator was only released in 3.13. So this is only "silently" deprecated, unless we wanted to use the external typing-extensions module?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can use the typing-extensions module. It's better to properly mark this as deprecated!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added typing-extensions to dependencies and marked this func as deprecated

# This method will be removed in a future version.
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