Skip to content

Commit c54d263

Browse files
author
Luisa Torres
committed
First commit
0 parents  commit c54d263

5 files changed

Lines changed: 141 additions & 0 deletions

File tree

.idea/inspectionProfiles/profiles_settings.xml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/typeform-python.iml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/workspace.xml

Lines changed: 33 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

typeform/client.py

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import requests
2+
3+
class Client(object):
4+
BASE_URL = 'https://api.typeform.com/'
5+
_VALID_VERSIONS = ['v1', ]
6+
7+
def __init__(self, api_key, version=None):
8+
self.api_key = api_key
9+
if version not in self._VALID_VERSIONS:
10+
self.version = self._VALID_VERSIONS[0]
11+
12+
def _get(self, endpoint, params=None):
13+
return self._request('GET', endpoint, params)
14+
15+
def _request(self, method, endpoint, params=None, data=None):
16+
url = '{0}/{1}/{2}'.format(self.BASE_URL, self.version, endpoint)
17+
response = requests.request(method, url, params=params, json=data)
18+
r = response.json()
19+
if response.status_code in [403, 404]:
20+
if 'message' in r:
21+
raise Exception(r['message'])
22+
else:
23+
if 'code' in r:
24+
raise Exception(r['description'])
25+
raise Exception('Unexpected error.')
26+
return r
27+
28+
def get_form_uid(self, url_form):
29+
"""Returns addresses registered by the user.
30+
Args:
31+
url_form:
32+
Returns:
33+
A string.
34+
"""
35+
list_url = url_form.split("/to/")
36+
typeform_uid = list_url[1]
37+
return typeform_uid
38+
39+
def get_form_information(self, uid=None, url=None):
40+
"""Returns addresses registered by the user.
41+
Args:
42+
typeform_uid:
43+
Returns:
44+
A dict.
45+
"""
46+
if uid is None:
47+
if url is None:
48+
raise Exception('You must provide either an UID or Form URL.')
49+
else:
50+
uid = self.get_form_uid(url)
51+
params = {'key': self.api_key}
52+
return self._get('form/{}'.format(uid), params=params)
53+
54+
def get_form_stats(self, uid=None, url=None):
55+
"""Returns stats of form.
56+
Args:
57+
uid:
58+
url:
59+
Returns:
60+
A dict.
61+
"""
62+
form_information = self.get_form_information(uid=uid, url=url)
63+
return form_information['stats']
64+
65+
def get_form_questions(self, uid=None, url=None):
66+
"""Returns questions of form.
67+
Args:
68+
uid:
69+
url:
70+
Returns:
71+
A dict.
72+
"""
73+
form_information = self.get_form_information(uid=uid, url=url)
74+
return form_information['questions']
75+
76+
def get_form_metadata(self, uid=None, url=None):
77+
"""Returns metadata of form.
78+
Args:
79+
uid:
80+
url:
81+
Returns:
82+
A dict.
83+
"""
84+
form_information = self.get_form_information(uid=uid, url=url)
85+
return form_information['responses']

0 commit comments

Comments
 (0)