Skip to content
This repository was archived by the owner on Jan 17, 2025. It is now read-only.

Commit 6f3ce98

Browse files
add a func to create a respondent url from the required parameters
1 parent 7463579 commit 6f3ce98

File tree

3 files changed

+47
-2
lines changed

3 files changed

+47
-2
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,20 @@ data = registry.download_collection(cell.collection_id)
5353
from dynata_rex import RespondentGateway
5454
gateway = RespondentGateway('rex_access_key', 'rex_secret_key')
5555
```
56+
57+
### Create a survey link for your respondent
58+
```
59+
url = 'https://respondent.fake.rex.dynata.com/start?ctx=XXXX&language=en'
60+
61+
signed_link = gateway.create_respondent_url(url,
62+
'1990-01-01',
63+
'male',
64+
'90210',
65+
'very-unique-respondent-id',
66+
ttl=60)
67+
# https://respondent.fake.rex.dynata.com/start?ctx=XXXX&language=en&birth_date=1990-01-01&gender=male&postal_code=90210&respondent_id=very-unique-respondent-id&access_key=rex_access_key&expiration=2021-11-29T15:35:12.993Z&signature=4353e8c4ca8f8fb75530214ac78139b55ca3f090438c639476b8584afe1396e6
68+
```
69+
5670
### Sign an inbound /start link with your credentials
5771
```
5872
url = 'https://respondent.fake.rex.dynata.com/start?ctx=XXXX&language=en'

dynata_rex/opportunity_registry.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def __init__(self,
4141
self.signature_ttl = signature_ttl
4242
self.make_request = RexRequest(access_key,
4343
secret_key,
44-
ttl=signature_ttl)
44+
default_ttl=signature_ttl)
4545
self.base_url = self._format_base_url(base_url)
4646

4747
if current_shard > shard_count:

dynata_rex/respondent_gateway.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
Description: Respondent Gateway interactions
77
"""
88
# Python Import
9-
from urllib.parse import urlparse, parse_qsl, unquote
9+
from urllib.parse import urlparse, parse_qsl, unquote, urlencode
1010
from typing import Union
1111
from copy import copy
1212

@@ -39,6 +39,37 @@ def __init__(self,
3939
self.default_ttl = default_ttl
4040
self.signer = Signer(access_key, secret_key, default_ttl=default_ttl)
4141

42+
def create_respondent_url(self,
43+
url: str,
44+
birth_date: str,
45+
gender: str,
46+
postal_code: str,
47+
respondent_id: str,
48+
ttl: Union[int, None] = None,
49+
url_quoting: bool = False) -> str:
50+
"""
51+
Creates a url from the url of an opportunity + the required
52+
parameters for entry into the respondent gateway.
53+
54+
@url: live/test url of an opportunity
55+
@birth_date: birth date in ISO8601 (YYYY-MM-DD) format
56+
@gender: 'male' / 'female'
57+
@postal: postal code as string
58+
@respondent_id : unique identifier for the respondent
59+
"""
60+
parsed = urlparse(url)
61+
base_params = dict(parse_qsl(parsed.query))
62+
required_params = {
63+
'birth_date': birth_date,
64+
'gender': gender,
65+
'postal_code': postal_code,
66+
'respondent_id': respondent_id
67+
}
68+
final_params = dict(base_params, **required_params)
69+
updated_query = urlencode(final_params, doseq=True)
70+
parsed = parsed._replace(query=updated_query)
71+
return self.sign_url(parsed.geturl(), ttl=ttl, url_quoting=url_quoting)
72+
4273
def sign_url(self,
4374
url,
4475
ttl: Union[int, None] = None,

0 commit comments

Comments
 (0)