8000 #1 moved auth parsing to signin method (#5) · sotnich/server-client-python@cfa1f55 · GitHub
[go: up one dir, main page]

Skip to content

Commit cfa1f55

Browse files
authored
tableau#1 moved auth parsing to signin method (tableau#5)
* moved auth parsing to signin method * changed impersonate_id to user_id_to_impersonate
1 parent 1084907 commit cfa1f55

File tree

5 files changed

+22
-26
lines changed

5 files changed

+22
-26
lines changed
Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,6 @@
1-
import xml.etree.ElementTree as ET
2-
from .. import NAMESPACE
3-
4-
51
class TableauAuth(object):
6-
def __init__(self, username, password, site='', impersonate_id=None):
7-
# CHECK FOR USERNAME AND PASSWORD
2+
def __init__(self, username, password, site='', user_id_to_impersonate=None):
3+
self.user_id_to_impersonate = user_id_to_impersonate
84
self.password = password
9-
self.username = username
105
self.site = site
11-
self.impersonate_id = impersonate_id
12-
13-
@staticmethod
14-
def from_response(parent_srv, resp):
15-
parsed_response = ET.fromstring(resp)
16-
parent_srv._site_id = parsed_response.find('.//t:site', namespaces=NAMESPACE).get('id', None)
17-
parent_srv._user_id = parsed_response.find('.//t:user', namespaces=NAMESPACE).get('id', None)
18-
auth_token = parsed_response.find('t:credentials', namespaces=NAMESPACE).get('token', None)
19-
parent_srv._auth_token = auth_token
6+
self.username = username

tableauserverapi/server/endpoint/auth_endpoint.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from endpoint import Endpoint
2-
from .. import RequestFactory, TableauAuth
2+
from .. import RequestFactory, NAMESPACE
3+
import xml.etree.ElementTree as ET
34
import logging
45

56
logger = logging.getLogger('tableau.endpoint.auth')
@@ -27,7 +28,11 @@ def sign_in(self, auth_req):
2728
server_response = self.parent_srv.session.post(url, data=signin_req,
2829
**self.parent_srv.http_options)
2930
Endpoint._check_status(server_response)
30-
TableauAuth.from_response(self.parent_srv, server_response.text)
31+
parsed_response = ET.fromstring(server_response.text)
32+
site_id = parsed_response.find('.//t:site', namespaces=NAMESPACE).get('id', None)
33+
user_id = parsed_response.find('.//t:user', namespaces=NAMESPACE).get('id', None)
34+
auth_token = parsed_response.find('t:credentials', namespaces=NAMESPACE).get('token', None)
35+
self.parent_srv._set_auth(site_id, user_id, auth_token)
3136
logger.info('Signed into {0} as {1}'.format(self.parent_srv.server_address, auth_req.username))
3237
return Auth.contextmgr(self.sign_out)
3338

tableauserverapi/server/request_factory.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ def _add_multipart(parts):
1010
multipart_part = RequestField(name=name, data=data, filename=filename)
1111
multipart_part.make_multipart(content_type=content_type)
1212
mime_multipart_parts.append(multipart_part)
13-
post_body, content_type = encode_multipart_formdata(mime_multipart_parts)
13+
xml_request, content_type = encode_multipart_formdata(mime_multipart_parts)
1414
content_type = ''.join(('multipart/mixed',) + content_type.partition(';')[1:])
15-
return post_body, content_type
15+
return xml_request, content_type
1616

1717

1818
class AuthRequest(object):
@@ -23,9 +23,9 @@ def signin_req(self, auth_item):
2323
credentials_element.attrib['password'] = auth_item.password
2424
site_element = ET.SubElement(credentials_element, 'site')
2525
site_element.attrib['contentUrl'] = auth_item.site
26-
if auth_item.impersonate_id:
26+
if auth_item.user_id_to_impersonate:
2727
user_element = ET.SubElement(credentials_element, 'user')
28-
user_element.attrib['id'] = auth_item.impersonate_id
28+
user_element.attrib['id'] = 8000 auth_item.user_id_to_impersonate
2929
return ET.tostring(xml_request)
3030

3131

tableauserverapi/server/server.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,16 @@ def clear_http_options(self):
3434
self._http_options = dict()
3535

3636
def _clear_auth(self):
37-
self._auth_token = None
3837
self._site_id = None
3938
self._user_id = None
39+
self._auth_token = None
4040
self._session = requests.Session()
4141

42+
def _set_auth(self, site_id, user_id, auth_token):
43+
self._site_id = site_id
44+
self._user_id = user_id
45+
self._auth_token = auth_token
46+
4247
@property
4348
def baseurl(self):
4449
return "{0}/api/{1}".format(self._server_address, str(self.version))

test/test_auth.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@ def test_sign_in_impersonate(self):
3232
response_xml = file.read()
3333
with requests_mock.mock() as m:
3434
m.post(self.baseurl + '/signin', text=response_xml)
35-
tableau_auth = TSA.TableauAuth('testuser',
36-
'password',
37-
impersonate_id='dd2239f6-ddf1-4107-981a-4cf94e415794')
35+
tableau_auth = TSA.TableauAuth('testuser', 'password',
36+
user_id_to_impersonate='dd2239f6-ddf1-4107-981a-4cf94e415794')
3837
self.server.auth.sign_in(tableau_auth)
3938

4039
self.assertEqual('MJonFA6HDyy2C3oqR13fRGqE6cmgzwq3', self.server.auth_token)

0 commit comments

Comments
 (0)
0