50
50
UBUNTU_SSO_SERVICE = os.environ.get(
51
51
"USSOC_SERVICE_URL", "https://login.ubuntu.com/api/1.0")
52
53
UBUNTU_SOFTWARE_CENTER_AGENT_SERVICE = BUY_SOMETHING_HOST+"/api/1.0"
54
55
class EmptyObject(object):
134
135
self._pending_requests.empty()):
138
class UbuntuSSOAPI(gobject.GObject):
141
"whoami" : (gobject.SIGNAL_RUN_LAST,
143
(gobject.TYPE_PYOBJECT,),
145
"error" : (gobject.SIGNAL_RUN_LAST,
147
(gobject.TYPE_PYOBJECT,),
152
def __init__(self, token):
153
gobject.GObject.__init__(self)
156
self.service = UBUNTU_SSO_SERVICE
158
token = OAuthToken(self.token["token"], self.token["token_secret"])
159
authorizer = OAuthAuthorizer(self.token["consumer_key"],
160
self.token["consumer_secret"],
162
self.worker_thread = RestfulClientWorker(authorizer, self.service)
163
self.worker_thread.start()
164
glib.timeout_add(200, self._monitor_thread)
166
def _monitor_thread(self):
167
# glib bit of the threading, runs in the main thread
168
if self._whoami is not None:
169
self.emit("whoami", self._whoami)
171
if self._error is not None:
172
self.emit("error", self._error)
176
def _thread_whoami_done(self, result):
177
self._whoami = result
179
def _thread_whoami_error(self, e):
183
self.worker_thread.queue_request("accounts.me", (), {},
184
self._thread_whoami_done,
185
self._thread_whoami_error)
137
188
class SoftwareCenterAgent(gobject.GObject):
415
466
print "_available: ", [x.name for x in result]
416
467
def _error(scaagent, errormsg):
417
468
print "_error:", errormsg
469
def _whoami(sso, whoami):
470
print "whoami: ", whoami
419
472
# interactive test code
420
473
if __name__ == "__main__":
434
487
scagent.query_available_for_me("dummy_oauth", "dummy openid")
436
489
elif sys.argv[1] == "sso":
437
sso = UbuntuSSOlogin()
438
sso.connect("login-successful", _login_success)
439
sso.connect("login-failed", _login_failed)
440
sso.connect("need-username-password", _login_need_user_and_password)
490
def _dbus_maybe_login_successful(ssologin, oauth_result):
491
sso = UbuntuSSOAPI(oauth_result)
492
sso.connect("whoami", _whoami)
493
sso.connect("error", _error)
495
from login_sso import LoginBackendDbusSSO
496
backend = LoginBackendDbusSSO("", "appname", "login_text")
497
backend.connect("login-successful", _dbus_maybe_login_successful)
498
backend.login_or_register()
500
elif sys.argv[1] == "ssologin":
501
ssologin = UbuntuSSOlogin()
502
ssologin.connect("login-successful", _login_success)
503
ssologin.connect("login-failed", _login_failed)
504
ssologin.connect("need-username-password", _login_need_user_and_password)
443
507
elif sys.argv[1] == "agent-anon":
444
508
anon_agent = SoftwareCenterAgentAnonymous()