Setting to change server for CREST, and some other improvements.

This commit is contained in:
blitzmann
2015-10-31 13:20:13 -04:00
parent 24f770aa7b
commit ccb9e085b2
8 changed files with 79 additions and 35 deletions

View File

@@ -10,13 +10,27 @@ import time
from wx.lib.pubsub import pub
import eos.db
from eos.enum import Enum
from eos.types import CrestChar
import service
logger = logging.getLogger(__name__)
class Servers(Enum):
TQ = 0
SISI = 1
class CrestModes(Enum):
IMPLICIT = 0
USER = 1
class Crest():
clientIDs = {
Servers.TQ: 'f9be379951c046339dc13a00e6be7704',
Servers.SISI: 'af87365240d644f7950af563b8418bad'
}
# @todo: move this to settings
clientCallback = 'http://localhost:6461'
clientTest = True
@@ -29,7 +43,17 @@ class Crest():
return cls._instance
@classmethod
def restartService(cls):
# This is hear to reseed pycrest values when changing preferences
# We first stop the server n case one is running, as creating a new
# instance doesn't do this.
cls._instance.stopServer()
cls._instance = Crest()
return cls._instance
def __init__(self):
print "init crest"
self.settings = service.settings.CRESTSettings.getInstance()
self.scopes = ['characterFittingsRead', 'characterFittingsWrite']
@@ -40,10 +64,11 @@ class Crest():
# Base EVE connection that is copied to all characters
self.eve = service.pycrest.EVE(
client_id=self.settings.get('clientID') if self.settings.get('mode') == 1 else config.clientID,
api_key=self.settings.get('clientSecret') if self.settings.get('mode') == 1 else None,
redirect_uri=self.clientCallback,
testing=self.clientTest)
client_id=self.settings.get('clientID') if self.settings.get('mode') == CrestModes.USER else self.clientIDs.get(self.settings.get('server')),
api_key=self.settings.get('clientSecret') if self.settings.get('mode') == CrestModes.USER else None,
redirect_uri=self.clientCallback,
testing=self.isTestServer
)
self.implicitCharacter = None
@@ -52,6 +77,10 @@ class Crest():
self.charCache = {}
pub.subscribe(self.handleLogin, 'sso_login')
@property
def isTestServer(self):
return self.settings.get('server') == Servers.SISI
def delCrestCharacter(self, charID):
char = eos.db.getCrestCharacter(charID)
eos.db.remove(char)
@@ -72,7 +101,7 @@ class Crest():
'''
Get character, and modify to include the eve connection
'''
if self.settings.get('mode') == 0:
if self.settings.get('mode') == CrestModes.IMPLICIT:
if self.implicitCharacter.ID != charID:
raise ValueError("CharacterID does not match currently logged in character.")
return self.implicitCharacter
@@ -148,7 +177,7 @@ class Crest():
self.implicitCharacter.eve = eve
#self.implicitCharacter.fetchImage()
wx.CallAfter(pub.sendMessage, 'login_success', type=0)
wx.CallAfter(pub.sendMessage, 'login_success', type=CrestModes.IMPLICIT)
elif 'code' in message:
eve = copy.deepcopy(self.eve)
eve.authorize(message['code'][0])
@@ -167,6 +196,6 @@ class Crest():
self.charCache[int(info['CharacterID'])] = char
eos.db.save(char)
wx.CallAfter(pub.sendMessage, 'login_success', type=1)
wx.CallAfter(pub.sendMessage, 'login_success', type=CrestModes.USER)
self.stopServer()

View File

@@ -88,7 +88,10 @@ class StoppableHTTPServer(BaseHTTPServer.HTTPServer):
def serve(self):
while self.run:
self.handle_request()
try:
self.handle_request()
except TypeError:
pass
if __name__ == "__main__":
httpd = StoppableHTTPServer(('', 6461), AuthHandler)

View File

@@ -278,7 +278,7 @@ class CRESTSettings():
# mode
# 0 - Implicit authentication
# 1 - User-supplied client details
serviceCRESTDefaultSettings = {"mode": 0, "clientID": "", "clientSecret": ""}
serviceCRESTDefaultSettings = {"mode": 0, "server": 0, "clientID": "", "clientSecret": ""}
self.serviceCRESTSettings = SettingsProvider.getInstance().getSettings("pyfaServiceCRESTSettings", serviceCRESTDefaultSettings)