8000 Cleanup duplications (#87) · Souravsp/server-client-python@6a48ddc · GitHub
[go: up one dir, main page]

Skip to content

Commit 6a48ddc

Browse files
author
Russell Hay
authored
Cleanup duplications (tableau#87)
* Cleaning up the base endpoint object to reduce duplication * Deduping the ctors for Endpoints * Adding comment to clarify the condition on server_response.encoding * fixing pep8 problems * Auth Endpoint had two __init__, getting rid of both of them because they aren't needed * make_headers -> make_common_headers * token -> auth_token
1 parent a4b90ca commit 6a48ddc

12 files changed

+41
-85
lines changed

tableauserverclient/server/endpoint/auth_endpoint.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@ def __enter__(self):
1717
def __exit__(self, exc_type, exc_val, exc_tb):
1818
self._callback()
1919

20-
def __init__(self, parent_srv):
21-
super(Endpoint, self).__init__()
22-
self.parent_srv = parent_srv
23-
2420
@property
2521
def baseurl(self):
2622
return "{0}/auth".format(self.parent_srv.baseurl)

tableauserverclient/server/endpoint/datasources_endpoint.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616

1717

1818
class Datasources(Endpoint):
19-
def __init__(self, parent_srv):
20-
super(Endpoint, self).__init__()
21-
self.parent_srv = parent_srv
22-
2319
@property
2420
def baseurl(self):
2521
return "{0}/sites/{1}/datasources".format(self.parent_srv.baseurl, self.parent_srv.site_id)

tableauserverclient/server/endpoint/endpoint.py

Lines changed: 40 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -8,64 +8,61 @@
88

99

1010
class Endpoint(object):
11-
def __init__(self):
12-
self.parent_srv = None
11+
def __init__(self, parent_srv):
12+
self.parent_srv = parent_srv
1313

1414
@staticmethod
15-
def _check_status(server_response):
16-
if server_response.status_code not in Success_codes:
17-
raise ServerResponseError.from_response(server_response.content)
15+
def _make_common_headers(auth_token, content_type):
16+
retval = {}
17+
if auth_token is not None:
18+
retval['x-tableau-auth'] = auth_token
19+
if content_type is not None:
20+
retval['content-type'] = content_type
1821

19-
def get_unauthenticated_request(self, url, request_object=None):
22+
def _make_request(self, method, url, content=None, request_object=None, auth_token=None, content_type=None):
2023
if request_object is not None:
2124
url = request_object.apply_query_params(url)
22-
server_response = self.parent_srv.session.get(url, **self.parent_srv.http_options)
25+
parameters = {}
26+
parameters.update(self.parent_srv.http_options)
27+
parameters['headers'] = Endpoint._make_common_headers(auth_token, content_type)
28+
29+
if content is not None:
30+
parameters['data'] = content
31+
32+
server_response = method(url, **parameters)
2333
self._check_status(server_response)
34+
35+
# This check is to determine if the response is a text response (xml or otherwise)
36+
# so that we do not attempt to log bytes and other binary data.
2437
if server_response.encoding:
2538
logger.debug(u'Server response from {0}:\n\t{1}'.format(
2639
url, server_response.content.decode(server_response.encoding)))
2740
return server_response
2841

42+
@staticmethod
43+
def _check_status(server_response):
44+
if server_response.status_code not in Success_codes:
45+
raise ServerResponseError.from_response(server_response.content)
46+
47+
def get_unauthenticated_request(self, url, request_object=None):
48+
return self._make_request(self.parent_srv.session.get, url, request_object=request_object)
49+
2950
def get_request(self, url, request_object=None):
30-
if request_object is not None:
31-
url = request_object.apply_query_params(url)
32-
auth_token = self.parent_srv.auth_token
33-
server_response = self.parent_srv.session.get(url,
34-
headers={'x-tableau-auth': auth_token},
35-
**self.parent_srv.http_options)
36-
self._check_status(server_response)
37-
if server_response.encoding:
38-
logger.debug(u'Server response from {0}: \n\t{1}'.format(
39-
url, server_response.content.decode(server_response.encoding)))
40-
return server_response
51+
return self._make_request(self.parent_srv.session.get, url, auth_token=self.parent_srv.auth_token,
52+
request_object=request_object)
4153

4254
def delete_request(self, url):
43-
auth_token = self.parent_srv.auth_token
44-
server_response = self.parent_srv.session.delete(url,
45-
headers={'x-tableau-auth': auth_token},
46-
**self.parent_srv.http_options)
47-
self._check_status(server_response)
55+
# We don't return anything for a delete
56+
self._make_request(self.parent_srv.session.delete, url, auth_token=self.parent_srv.auth_token)
4857
4958
def put_request(self, url, xml_request, content_type='text/xml'):
50-
auth_token = self.parent_srv.auth_token
51-
server_response = self.parent_srv.session.put(url, data=xml_request,
52-
headers={'x-tableau-auth': auth_token,
53-
'content-type': content_type},
54-
**self.parent_srv.http_options)
55-
self._check_status(server_response)
56-
if server_response.encoding:
57-
logger.debug(u'Server response from {0}: \n\t{1}'.format(
58-
url, server_response.content.decode(server_response.encoding)))
59-
return server_response
59+
return self._make_request(self.parent_srv.session.put, url,
60+
content=xml_request,
61+
auth_token=self.parent_srv.auth_token,
62+
content_type=content_type)
6063

6164
def post_request(self, url, xml_request, content_type='text/xml'):
62-
auth_token = self.parent_srv.auth_token
63-
server_response = self.parent_srv.session.post(url, data=xml_request,
64-
headers={'x-tableau-auth': auth_token,
65-
'content-type': content_type},
66-
**self.parent_srv.http_options)
67-
self._check_status(server_response)
68-
if server_response.encoding:
69-
logger.debug(u'Server response from {0}: \n\t{1}'.format(
70-
url, server_response.content.decode(server_response.encoding)))
71-
return server_response
65+
return self._make_request(self.parent_srv.session.post, url,
66+
content=xml_request,
67+
auth_token=self.parent_srv.auth_token,
68+
content_type=content_type)

tableauserverclient/server/endpoint/fileuploads_endpoint.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313

1414
class Fileuploads(Endpoint):
1515
def __init__(self, parent_srv):
16-
super(Endpoint, self).__init__()
17-
self.parent_srv = parent_srv
16+
super(Fileuploads, self).__init__(parent_srv)
1817
self.upload_id = ''
1918

2019
@property

tableauserverclient/server/endpoint/groups_endpoint.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88

99

1010
class Groups(Endpoint):
11-
def __init__(self, parent_srv):
12-
super(Endpoint, self).__init__()
13-
self.parent_srv = parent_srv
14-
1511
@property
1612
def baseurl(self):
1713
return "{0}/sites/{1}/groups".format(self.parent_srv.baseurl, self.parent_srv.site_id)

tableauserverclient/server/endpoint/projects_endpoint.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88

99

1010
class Projects(Endpoint):
11-
def __init__(self, parent_srv):
12-
super(Endpoint, self).__init__()
13-
self.parent_srv = parent_srv
14-
1511
@property
1612
def baseurl(self):
1713
return "{0}/sites/{1}/projects".format(self.parent_srv.baseurl, self.parent_srv.site_id)

tableauserverclient/server/endpoint/schedules_endpoint.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88

99

1010
class Schedules(Endpoint):
11-
def __init__(self, parent_srv):
12-
super(Endpoint, self).__init__()
13-
self.parent_srv = parent_srv
14-
1511
@property
1612
def baseurl(self):
1713
return "{0}/schedules".format(self.parent_srv.baseurl)

tableauserverclient/server/endpoint/server_info_endpoint.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66

77

88
class ServerInfo(Endpoint):
9-
def __init__(self, parent_srv):
10-
super(Endpoint, self).__init__()
11-
self.parent_srv = parent_srv
12-
139
@property
1410
def baseurl(self):
1511
return "{0}/serverInfo".format(self.parent_srv.baseurl)

tableauserverclient/server/endpoint/sites_endpoint.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88

99

1010
class Sites(Endpoint):
11-
def __init__(self, parent_srv):
12-
super(Endpoint, self).__init__()
13-
self.parent_srv = parent_srv
14-
1511
@property
1612
def baseurl(self):
1713
return "{0}/sites".format(self.parent_srv.baseurl)

tableauserverclient/server/endpoint/users_endpoint.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88

99

1010
class Users(Endpoint):
11-
def __init__(self, parent_srv):
12-
super(Endpoint, self).__init__()
13-
self.parent_srv = parent_srv
14-
1511
@property
1612
def baseurl(self):
1713
return "{0}/sites/{1}/users".format(self.parent_srv.baseurl, self.parent_srv.site_id)

tableauserverclient/server/endpoint/views_endpoint.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@
77

88

99
class Views(Endpoint):
10-
def __init__(self, parent_srv):
11-
super(Endpoint, self).__init__()
12-
self.parent_srv = parent_srv
13-
1410
@property
1511
def baseurl(self):
1612
return "{0}/sites/{1}".format(self.parent_srv.baseurl, self.parent_srv.site_id)

tableauserverclient/server/endpoint/workbooks_endpoint.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@
1717

1818

1919
class Workbooks(Endpoint):
20-
def __init__(self, parent_srv):
21-
super(Endpoint, self).__init__()
22-
self.parent_srv = parent_srv
23-
2420
@property
2521
def baseurl(self):
2622
return "{0}/sites/{1}/workbooks".format(self.parent_srv.baseurl, self.parent_srv.site_id)

0 commit comments

Comments
 (0)
0