示例#1
0
    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)
示例#2
0
文件: imgur.py 项目: sgricci/digsby
    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)
示例#3
0
    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
示例#4
0
文件: trim.py 项目: sgricci/digsby
    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)
示例#5
0
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))
示例#6
0
        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))
示例#7
0
    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
示例#8
0
 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)
示例#9
0
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)
示例#10
0
    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)
示例#11
0
                       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):
示例#12
0
    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')