def authorize_token(self, callback=None): if self.OPENID: params = util.odict( (('myspaceid.consumer_key', self.consumer.key), ('openid.oauth.consumer', self.consumer.key), ('openid.mode', 'checkid_setup'), ('openid.realm', 'http://www.digsby.com/'), ('myspaceid.target_domain', 'http://www.digsby.com/myspace/'), ('openid.return_to', 'http://www.digsby.com/myspace/'), ('openid.ns', 'http://specs.openid.net/auth/2.0'), ('openid.ns.oauth', 'http://specs.openid.net/extensions/oauth/1.0'), ('openid.claimed_id', 'http://specs.openid.net/auth/2.0/identifier_select'), ('openid.identity', 'http://specs.openid.net/auth/2.0/identifier_select'), ('myspaceid.permissions', '|'.join(self.required_permissions)))) else: params = util.odict( (('myspaceid.consumer_key', self.consumer.key), ('myspaceid.target_domain', 'http://www.digsby.com/myspace/'), ('myspaceid.permissions', '|'.join(self.required_permissions)))) callback_url_function = lambda cb_url: self.RequestFactory( net.UrlQuery(self.urls['request_token'], params), openid_req=self.OPENID, ).get_full_url() self.event("open_oauth_page", callback_url_function, callback)
def send_method(self, call, callback = None): url = net.UrlQuery(call.get_endpoint(self.API_BASE) + '.' + call.spec.format) params = dict((name, arg.value) for name, arg in call.bound_args.items()) params['key'] = self.api_key req = urllib2.Request(url, params) util.threaded(urllib2.urlopen)(req, callback = callback)
def grant_url(self, permission): url = net.UrlQuery('http://www.facebook.com/connect/prompt_permissions.php', api_key=self.connection.digsby.api_key, skipcookie='', fbconnect='true', v='1.0', display='popup', extern='1', next=DESKTOP_APP_POPUP, ext_perm=permission) url = net.UrlQuery('http://www.facebook.com/login.php', next=url, display='popup', skipcookie='') return url
def send_method(self, call, callback=None): url = net.UrlQuery(call.get_endpoint(self.API_BASE), api_key=self.api_key) req = urllib2.Request( url, dict((name, arg.value) for name, arg in call.bound_args.items()), ) util.threaded(urllib2.urlopen)(req, callback=callback)
def digsby_link_for_activity(proto='merge'): import branding campaign = branding.get('digsby.myspace.newsfeed.campaign', 'digsby_myspace', 'myspacenewsfeed') return str( net.UrlQuery("http://www.digsby.com/", utm_campaign=campaign, utm_medium='msp', utm_source=proto))
def get_url(self): kwargs = DIGSBY_UTM_ARGS.copy() self_userid = getattr(self.connection, 'userid', None) if self_userid is not None: kwargs.update(friendId=self_userid) kwargs.update(fuseaction=self.header_fuseactions[name]) return self.openurl(net.UrlQuery(self.url_base, **kwargs))
def finalize_fields(self, oauth_url, data, headers, method, oauth_request): if oauth_url: #or method == 'GET': assert not data, "Can't use data with oauth_url" assert not headers, "Can't use headers with oauth_url" assert method in ('GET', None), "Must use GET with oauth_url" url = oauth_request.to_url() final_headers = {} method = None else: url = net.UrlQuery(oauth_request.http_url, **oauth_request.get_nonoauth_parameters()) final_headers = oauth_request.to_header(getattr(self, 'realm', '')) if headers is not None: final_headers.update(headers) method = oauth_request.http_method return method, url, final_headers, data
def getURL(self, s, userid=None, pop=True): ''' possible values of s include: friendmoods viewbirthdays home ''' if userid is None: try: userid = self.api.userid except AttributeError: return 'http://www.myspace.com' chl = self.next_chl(pop) if chl is None: return 'http://www.myspace.com' n = msimutil.roflcopter(chl.key, self.api.sesskey, self.api.userid) return net.UrlQuery( 'http://home.myspace.com/Modules/IM/Pages/UrlRedirector.aspx', challenge='%s-%s-%s' % (n, self.api.userid, self.api.sesskey), response=str(self.make_chl_response(chl.data)), target=s, targetid=userid)
def ms_analytics_url(source, term): return net.UrlQuery('http://www.digsby.com/', utm_campaign='msnewsfeed', utm_medium='msp', utm_source=source, utm_term=term)
def continue_login2(self, forward_to): from common import pref next = forward_to ach_next = '' if self.ask_ach: ach_next = next next = ach_url = net.UrlQuery(DIGSBY_ACHIEVEMENTS_LOGIN_PERMS, next=ach_next, req_perms=','.join(APERMS)) if not pref('facebook.webkitbrowser', default=False, type=bool): next = net.UrlQuery(LOGIN_SUCCESS_PAGE, next=next) digsby_next = next if self.ask_ach: d_req_perms = DPERMS_DA else: d_req_perms = DPERMS_D if self.ask_ach: url = net.UrlQuery(DIGSBY_LOGIN_PERMS, next=next, skipcookie='true', req_perms=','.join(d_req_perms), cancel_url=ach_url) else: url = net.UrlQuery( DIGSBY_LOGIN_PERMS, next=next, skipcookie='true', req_perms=','.join(d_req_perms), ) log.info("facebook creating window") window = self.window = FBLoginWindow(self.username, self.acct) def on_nav(e=None, b=None, url=None, *a, **k): if not window.ie: e.Skip() #careful with name collision url = e.URL try: parsed = net.UrlQuery.parse(url) except Exception: traceback.print_exc() else: log.info('url: %r', url) session = parsed['query'].get('session') auth_token = parsed['query'].get('auth_token') log.info('has session?: %r', session is not None) log.info('has auth_token?: %r', auth_token is not None) target = None if auth_token or session: parsed_base = dict(parsed) parsed_base.pop('query') parsed_base.pop('scheme') digsby_next_parsed = net.UrlQuery.parse(digsby_next) log.info('digsby_next_parsed: %r', digsby_next_parsed) digsby_next_parsed['query'].pop( '', None ) #this happens for urls with no query, which we may/maynot have digsby_next_parsed.pop( 'scheme') #http/https is not what interests us digsby_next_parsed_base = dict(digsby_next_parsed) digsby_next_parsed_base.pop('query') ach_next_parsed = net.UrlQuery.parse(ach_next) log.info('ach_next_parsed: %r', ach_next_parsed) ach_next_parsed['query'].pop( '', None ) #this happens for urls with no query, which we may/maynot have ach_next_parsed.pop( 'scheme') #http/https is not what interests us ach_next_parsed_base = dict(ach_next_parsed) ach_next_parsed_base.pop('query') if parsed_base == digsby_next_parsed_base: target = 'digsby' elif parsed_base == ach_next_parsed_base: target = 'digsby_ach' if target is None: return if auth_token: log.info('parsed: %r', parsed) elif session: #not sure how to clean this up right now. log.info('parsed: %r', parsed) log.info('Parsing url: %r, %r', parsed_base, parsed['query']) if target == 'digsby': log.info('got digsby session') log.info_s('\tsession = %r, auth_token = %r', session, auth_token) self.digsby.set_session(session) self.digsby.logged_in = True if not self.ask_ach and not self.dead: self.login_success(self, did_login=True) if not self.dead: if not pref('facebook.webkitbrowser', default=False, type=bool): b.Stop() b.LoadUrl(digsby_next_parsed['query']['next']) elif target == 'digsby_ach': log.info('got ach session') log.info_s('\tsession = %r, auth_token = %r', session, auth_token) self.digsby_ach.set_session(session) self.digsby_ach.logged_in = True if not (self.digsby.logged_in and self.digsby.uid == self.digsby_ach.uid): #wtf happened if these fail? - IE cookies return self.login_error(self) if not self.dead: return self.login_success(self, did_login=True) def on_close(*a, **k): if not self.dead: return self.login_success(self, did_login=True) # self.login_error(self) if window.webkit: def on_load(e, browser): if e.URL == url: browser.RunScript( 'document.getElementById("offline_access").checked=true;' ) browser.RunScript( 'document.getElementById("email").value = %s;' % simplejson.dumps(self.username)) else: def on_load(*a, **k): pass window.set_callbacks(on_nav, on_load, on_close) window.clear_cookies() window.LoadURL(url)
v='1.0', connect_display='popup', return_session='true') DPERMS_DA = ['read_stream'] + ['publish_stream'] + ['user_events'] + [ 'xmpp_login' ] + ['manage_notifications'] DPERMS_D = DPERMS_DA #+ ['publish_stream'] DPERMS_REQUIRED = ['read_stream'] + ['user_events'] + ['xmpp_login'] + [ 'manage_notifications' ] APERMS = ['publish_stream'] APERMS_REQUIRED = APERMS[:] DIGSBY_LOGIN_PERMS = net.UrlQuery(HTTP_FBLOGIN, api_key=DIGSBY_API_KEY, **FB_CONNECT_OPTS) DIGSBY_ACHIEVEMENTS_LOGIN_PERMS = net.UrlQuery( HTTP_FBLOGIN, api_key=DIGSBY_ACHIEVEMENTS_API_KEY, **FB_CONNECT_OPTS) def print_fn(func): def wrapper(*a, **k): print clock(), func.__name__ return func(*a, **k) return wrapper class MethodPrinter(type): def __init__(cls, name, bases, dict):
def handle_success_loginpage(self, _name, resp): doc = resp.document if doc is None: raise NotInbox() if int(self.PP_AUTH_VERSION) < 900: form = None for form in doc.forms: if form.get( 'name' ) == 'f1': # it would be great if this had a real name, like "login" or something. break if form is None: self.handle_error(_name, Exception('No login form found')) log.error("Document: %r", HTML.tostring(doc)) return form.fields['login'] = self.username form.fields['passwd'] = self._decryptedpw() self._login_form = form else: data = HTML.tostring(doc) log.error("Document: %r", data) ppft_html = eval(util.get_between(data, "sFTTag:", ",") or 'None') ppft_token = HTML.fromstring(ppft_html).attrib['value'] bk = str(int(time.time())) action_url = net.UrlQuery( 'https://login.live.com/ppsecure/post.srf', **{ 'bk': bk, 'cbcxt': 'mai', 'ct': bk, 'id': '64855', 'lc': '1033', 'mkt': 'en-us', 'rpsnv': '11', 'rver': '6.1.6206.0', 'snsc': '1', 'wa': 'wsignin1.0', 'wp': 'MBI', 'wreply': 'https://mail.live.com/default.aspx' }) if _is_login_domain_exception(self.username): action_url = action_url.replace('login.live.com', 'msnia.login.live.com') self._login_form = util.Storage(form_values=lambda: dict( login=self.username, passwd=self._decryptedpw(), type='11', LoginOptions='2', NewUser='******', MEST='', PPSX='Passp', PPFT=ppft_token, idsbho='1', PwdPad='', sso='', i1='1', i2='1', i3='161605', i4='', i12='1', ), action=action_url) log.info('Got loginform for %r, submitting', self) self.request('sendauth')