def getCompanyData(self, company_id, token): h = Http(**self.settings.http_options) resp, data = h.request(self.companyEndpoint.format(company_id = company_id), method="GET") if resp.status == 500: raise SocialNetworkException() if resp.status != 200: return None else: return CompanyModel.wrap(simplejson.loads(data))
def getCompaniesData(self, user_id, token): h = Http(**self.settings.http_options) resp, data = h.request('{}?{}'.format(self.companiesEndpoint, urllib.urlencode({'access_token':token, 'v':'1', 'user_id':user_id})), method="GET") if resp.status == 500: raise SocialNetworkException() if resp.status != 200: return None else: return self.unwrapCompanies(data)
def getCompanyRoles(self, company_id, token): h = Http(**self.settings.http_options) resp, data = h.request(self.companyRolesEndpoint.format(company_id = company_id), method="GET") if resp.status == 500: raise SocialNetworkException() if resp.status != 200: return None else: result = simplejson.loads(data) return map(CompanyRoleModel.wrap, result['startup_roles'])
def getProfile(self, request): if request.params.get("error"): if 'denied' in request.params.get("error"): raise UserRejectedNotice("Import failed") else: return None resp, content = self.getAuthCode(request) if resp.status == 500: raise SocialNetworkException("Import failed") if resp.status != 200: result = simplejson.loads(content) return None else: token, (resp, data) = self.getTokenProfile(content) if resp.status == 500: raise SocialNetworkException("Import failed") if resp.status != 200: result = simplejson.loads(data) return None else: return self.getProfileFromData(token, data, request.root, request)
def token_func(context, request): settings = context.settings code = request.params.get("code") state = request.params.get("state") if not code or state != request.session.get_csrf_token(): raise SocialNetworkException("{} Login Failed".format(settings.network)) params = {'grant_type':'authorization_code', 'code':code , 'redirect_uri':request.resource_url(request.context, 'cb') , 'client_id':settings.appid, 'client_secret':settings.appsecret } h = Http() return h.request( "{}?{}".format(context.getTokenEndpoint, urllib.urlencode(params)), method="POST", body = {} )
def profile_func(content, context, request): settings = context.settings result = dict(parse_qsl(content)) token = result.get('oauth_token') secret = result.get('oauth_token_secret') user_id = result.get('user_id') if not (token and secret and user_id): raise SocialNetworkException() accessToken = Token(token, secret) client = Client(settings.consumer, accessToken) return accessToken, client.request('{}'.format(context.profileEndpoint), method="GET")
def token_func(context, request): settings = context.settings tokenSecret = request.session.pop('SOCIAL_TOKEN_{}'.format( settings.network)) verifier = request.params.get('oauth_verifier') if not (tokenSecret and verifier): raise SocialNetworkException("{} Login Failed".format( settings.network)) tokenSecret.set_verifier(verifier) client = Client(settings.consumer, tokenSecret) return client.request(context.tokenEndpoint, method="POST", headers={'Accept': 'application/json'})
def redirect_view(context, request): settings = context.settings context.start_process(request) params = {'oauth_callback': request.resource_url(request.context, 'cb')} client = Client(settings.consumer) resp, data = client.request(context.getCodeEndpoint, method="POST", body=urllib.urlencode(params), headers={'Accept': 'application/json'}) result = dict(parse_qsl(data)) token = result.get("oauth_token") secret = result.get("oauth_token_secret") if resp.status != 201 or not (token and secret): raise SocialNetworkException(data) request.session['SOCIAL_TOKEN_{}'.format(settings.network)] = Token( token, secret) params = urllib.urlencode({'oauth_token': token}) request.fwd_raw("{}?{}".format(context.codeEndpoint, params))