only call auth() once, and make it a member of mevemon class.
[mevemon] / mevemon.py
index ce7cc63..16a3954 100644 (file)
@@ -1,6 +1,8 @@
 import hildon
 import gtk
 from eveapi import eveapi
+import fetchimg
+import apicache
 
 # we will store our preferences in gconf
 import gnome.gconf
@@ -15,11 +17,10 @@ class mEveMon():
     def __init__(self):
         self.program = hildon.Program()
         self.program.__init__()
-        self.config = None
         self.gconf = gnome.gconf.client_get_default()
+        self.set_auth()
         self.ui = ui.mEveMonUI(self)
 
-
     def run(self):
         gtk.main()
     
@@ -38,33 +39,46 @@ class mEveMon():
     def set_uid(self, uid):
         self.gconf.set_string("/apps/maemo/mevemon/eve_uid", uid)
 
-    # really quick hack to get character list. doesn't handle errors well, and if it can't get the gconf settings it just returns the placeholders, when in reality it should tell the UI or something. basically half finished, just uploading to show ry... FIXME --danny
-    def get_characters( self ):
-        ui_char_list = []
-        print 'get_characters() called.'
-        placeholder_chars = [("Character 1", "avatar.png"), ("Character 2", "avatar.png")]
-        api = eveapi.EVEAPIConnection()
+
+    def set_auth(self):
         uid = self.get_uid()
         api_key = self.get_api_key()
-        if ( uid and api_key ):
-            auth = api.auth( userID = uid, apiKey = api_key )
-            try:
-                api_char_list = auth.account.Characters()
-            except eveapi.Error, e:
-                print "Sorry, eveapi returned error code %s." % e.code
-                print '"' + e.message + '"'
-                return placeholder_chars
-            except Exception, e:
-                print "The sky is falling! Unknown error: ", str( e )
-                raise
-            print "grabbing character list:"
+        cached_api = eveapi.EVEAPIConnection( cacheHandler = apicache.cache_handler( debug = False ) )
+
+        try:
+            self.auth = cached_api.auth( userID = uid, apiKey = api_key )
+        except eveapi.Error, e:
+            # if we can't, return the error message/pic --danny
+            return None
+        except Exception, e:
+            # unknown exception, dunno if this needs to be here if I just
+            # ignore it... probably a bad idea, but it was in the 
+            # apitest.py example... --danny
+            raise
+
+    def get_auth(self):
+        return self.auth
+
+    # really quick hack to get character list. doesn't handle errors well, and
+    # if it can't get the gconf settings it just returns the placeholders, when
+    # in reality it should tell the UI or something. basically half finished,
+    # just uploading to show ry... FIXME --danny
+    def get_characters( self ):
+        ui_char_list = []
+        # error message --danny
+        placeholder_chars = [("Please check your API settings.", "imgs/error.jpg")]
+        
+        try:
+            api_char_list = self.auth.account.Characters()
+            # append each char we get to the list we'll return to the UI --danny
             for character in api_char_list.characters:
-                print character
-                ui_char_list.append( ( character.name, "avatar.png" ) )
+                ui_char_list.append( ( character.name, 
+                    fetchimg.portrait_filename( character.characterID, 64 ) ) )
             return ui_char_list
-        else:
+        # if not entered into gconf, error message --danny
+        except eveapi.Error, e:
             return placeholder_chars
-        
+
 if __name__ == "__main__":
     app = mEveMon()
     app.run()