class RemoteSession(GetterSetter,QObject): '''This is the main high level object of the core of the Uploader. You need to create a remote session and use its methods in order to communicate and upload file to the Bloop servers''' def __init__(self): self.remote_url = "http://%s:%s/api/%s/index.o" % ( meta['SERVER'], meta['PORT'], meta['API']) self.server = ServiceProxy(self.remote_url) QObject.__init__(self) GetterSetter.__init__(self) def onStateChanged(self, state): print "RemoteSession.onStateChanged()! state:",state def _readRemoteResponse(self,result): '''Used in every request, this parses the returned array and fills in several variables''' if result.has_key(u'result'): if result.has_key(u'status'): self.status = result[u'status'] if result.has_key(u'api_name'): self.api_name = result[u'api_name'] if result.has_key(u'api_version'): self.api_version = result[u'api_version'] if result.has_key(u'time'): self.time = result[u'time'] if result.has_key(u'result'): result = result[u'result'] return result def setSessionId(self,sessionId): '''Sets the session Id.(Set to None when the session is destroyed)''' self._set('session_id',sessionId) def getSessionId(self): '''Gets the current session Id.''' return self._get('session_id') def setUsername(self,username): self._set('username',username) def setPassword(self,password): self._set('password',password) def getUsername(self): return self._get('username') def getCallStatus(self): return self.status def _getPassword(self): return self._get('password') def invalidate(self): '''Gets rid of all the data about this object, basically reset it, make it invalid''' self.setUsername(None) self.setPassword(None) self.setSessionId(None) self.setUserProfile(None) def create(self,username,password): ''' Request for session creation. This is the handshake with the server. We should come out of this with a session ID. ''' result = None r = None try: r = self.server.create(username,password,meta) result = self._readRemoteResponse(r) except Exception,e: self.invalidate() raise e if self.status != u'1': self.invalidate() raise Exception(result) self.setUsername(username) self.setPassword(password) assert(result.has_key(u'sessionId')) self.setSessionId(result[u"sessionId"]) return result