Skip to content

Commit 4a907d8

Browse files
committed
Fix unicode username/password for python2
1 parent b18427e commit 4a907d8

File tree

2 files changed

+38
-37
lines changed

2 files changed

+38
-37
lines changed

pgoapi/pgoapi.py

+37-37
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import logging
2929
import re
3030
import requests
31+
import six
3132

3233
from .utilities import f2i, h2f
3334
from pgoapi.rpc_api import RpcApi
@@ -45,71 +46,71 @@ class PGoApi:
4546
API_ENTRY = 'https://pgorelease.nianticlabs.com/plfe/rpc'
4647

4748
def __init__(self):
48-
49+
4950
self.log = logging.getLogger(__name__)
5051

5152
self._auth_provider = None
5253
self._api_endpoint = None
53-
54+
5455
self._position_lat = 0
5556
self._position_lng = 0
5657
self._position_alt = 0
5758

5859
self._req_method_list = []
59-
60+
6061
def call(self):
6162
if not self._req_method_list:
6263
return False
63-
64+
6465
if self._auth_provider is None or not self._auth_provider.is_login():
6566
self.log.info('Not logged in')
6667
return False
67-
68+
6869
player_position = self.get_position()
69-
70+
7071
request = RpcApi(self._auth_provider)
71-
72+
7273
if self._api_endpoint:
7374
api_endpoint = self._api_endpoint
7475
else:
7576
api_endpoint = self.API_ENTRY
76-
77+
7778
self.log.info('Execution of RPC')
7879
response = None
7980
try:
8081
response = request.request(api_endpoint, self._req_method_list, player_position)
8182
except ServerBusyOrOfflineException as e:
8283
self.log.info('Server seems to be busy or offline - try again!')
83-
84+
8485
# cleanup after call execution
8586
self.log.info('Cleanup of request!')
8687
self._req_method_list = []
87-
88+
8889
return response
8990

9091
def list_curr_methods(self):
9192
for i in self._req_method_list:
9293
print("{} ({})".format(RequestType.Name(i),i))
93-
94+
9495
def set_logger(self, logger):
9596
self._ = logger or logging.getLogger(__name__)
9697

9798
def get_position(self):
9899
return (self._position_lat, self._position_lng, self._position_alt)
99100

100-
def set_position(self, lat, lng, alt):
101+
def set_position(self, lat, lng, alt):
101102
self.log.debug('Set Position - Lat: %s Long: %s Alt: %s', lat, lng, alt)
102-
103+
103104
self._position_lat = f2i(lat)
104105
self._position_lng = f2i(lng)
105106
self._position_alt = f2i(alt)
106107

107108
def __getattr__(self, func):
108109
def function(**kwargs):
109-
110+
110111
if not self._req_method_list:
111112
self.log.info('Create new request...')
112-
113+
113114
name = func.upper()
114115
if kwargs:
115116
self._req_method_list.append( { RequestType.Value(name): kwargs } )
@@ -118,60 +119,59 @@ def function(**kwargs):
118119
else:
119120
self._req_method_list.append( RequestType.Value(name) )
120121
self.log.info("Adding '%s' to RPC request", name)
121-
122+
122123
return self
123-
124+
124125
if func.upper() in RequestType.keys():
125126
return function
126127
else:
127128
raise AttributeError
128-
129-
129+
130+
130131
def login(self, provider, username, password):
131-
132-
if not isinstance(username, str) or not isinstance(password, str):
132+
133+
if not isinstance(username, six.string_types) or not isinstance(password, six.string_types):
133134
raise AuthException("Username/password not correctly specified")
134-
135+
135136
if provider == 'ptc':
136137
self._auth_provider = AuthPtc()
137138
elif provider == 'google':
138139
self._auth_provider = AuthGoogle()
139140
else:
140141
raise AuthException("Invalid authentication provider - only ptc/google available.")
141-
142+
142143
self.log.debug('Auth provider: %s', provider)
143-
144+
144145
if not self._auth_provider.login(username, password):
145-
self.log.info('Login process failed')
146+
self.log.info('Login process failed')
146147
return False
147-
148+
148149
self.log.info('Starting RPC login sequence (app simulation)')
149-
150+
150151
# making a standard call, like it is also done by the client
151152
self.get_player()
152153
self.get_hatched_eggs()
153154
self.get_inventory()
154155
self.check_awarded_badges()
155156
self.download_settings(hash="05daf51635c82611d1aac95c0b051d3ec088a930")
156-
157+
157158
response = self.call()
158-
159-
if not response:
160-
self.log.info('Login failed!')
159+
160+
if not response:
161+
self.log.info('Login failed!')
161162
return False
162-
163+
163164
if 'api_url' in response:
164165
self._api_endpoint = ('https://{}/rpc'.format(response['api_url']))
165166
self.log.debug('Setting API endpoint to: %s', self._api_endpoint)
166167
else:
167168
self.log.error('Login failed - unexpected server response!')
168169
return False
169-
170+
170171
if 'auth_ticket' in response:
171172
self._auth_provider.set_ticket(response['auth_ticket'].values())
172-
173+
173174
self.log.info('Finished RPC login sequence (app simulation)')
174-
self.log.info('Login process completed')
175-
175+
self.log.info('Login process completed')
176+
176177
return True
177-

requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ protobuf>=3.0.0a3
33
requests==2.10.0
44
s2sphere==0.2.4
55
gpsoauth==0.3.0
6+
six

0 commit comments

Comments
 (0)