class XMApiClient(XMHttpClient):
    
    def __init__(self, clientId, accessToken):
        XMHttpClient.__init__(self, xiaomi_conf.API_URL)
        self.clientId = clientId
        self.accessToken = accessToken
        self.xmUtils = XMUtils()
        self.host = urlparse(xiaomi_conf.API_URL).hostname
        
    def callApi(self, path, params, headers={}, method='GET'):
        if not self.url:
            raise Exception("open api url error,", self.url)
        res = self.request(path, method, params, headers);
        jsonObject = self.safeJsonLoad(res.read())
        return  jsonObject
    
    def callApiSelfSign(self, path, params, macKey, method='GET'):
        if params and not params.has_key('clientId') :
            params['clientId'] = self.clientId
        if params and not params.has_key('token') :
            params['token'] = self.accessToken
        
        nonce = self.xmUtils.getNonce()
        sign = self.xmUtils.buildSignature(nonce, method, self.host, path, params, macKey)
        headers = self.xmUtils.buildMacRequestHead(self.accessToken, nonce, sign)
        return self.callApi(path, params, headers, method);
Beispiel #2
0
class XMApiClient(XMHttpClient):
    def __init__(self, clientId, accessToken):
        XMHttpClient.__init__(self, xiaomi_conf.API_URL)
        self.clientId = clientId
        self.accessToken = accessToken
        self.xmUtils = XMUtils()
        self.host = urlparse(xiaomi_conf.API_URL).hostname

    def callApi(self, path, params, headers={}, method='GET'):
        if not self.url:
            raise Exception("open api url error,", self.url)
        res = self.request(path, method, params, headers)
        jsonObject = self.safeJsonLoad(res.read())
        return jsonObject

    def callApiSelfSign(self, path, params, macKey, method='GET'):
        if params and not params.has_key('clientId'):
            params['clientId'] = self.clientId
        if params and not params.has_key('token'):
            params['token'] = self.accessToken

        nonce = self.xmUtils.getNonce()
        sign = self.xmUtils.buildSignature(params, macKey)
        headers = self.xmUtils.buildMacRequestHead(self.accessToken, nonce,
                                                   sign)
        return self.callApi(path, params, headers, method)
 def __init__(self, clientId, accessToken):
     XMHttpClient.__init__(self, xiaomi_conf.API_URL)
     self.clientId = clientId
     self.accessToken = accessToken
     self.xmUtils = XMUtils()
     self.host = urlparse(xiaomi_conf.API_URL).hostname
Beispiel #4
0
 def __init__(self, clientId, clientSecret, redirectUri):
     XMHttpClient.__init__(self, xiaomi_conf.VerifySession_URL)
     self.clientId = clientId
     self.clientSecret = clientSecret
     self.redirectUri = redirectUri
     self.xmUtils = XMUtils()
Beispiel #5
0
class XMOAuthClient(XMHttpClient):

    OAUTH2_PATH = {'authorize': '/oauth2/authorize', 'token':'/oauth2/token'}

    def __init__(self, clientId, clientSecret, redirectUri):
        XMHttpClient.__init__(self, xiaomi_conf.VerifySession_URL)
        self.clientId = clientId
        self.clientSecret = clientSecret
        self.redirectUri = redirectUri
        self.xmUtils = XMUtils()


    def getAuthorizeEndpoint(self):
        if not self.url:
            raise Exception("oauth url error", self.url)

        return urljoin(self.url, self.OAUTH2_PATH['authorize'])

    def getTokenEndpoint(self):
        if not self.url:
            raise Exception("oauth url error", self.url)

        return urljoin(self.url, self.OAUTH2_PATH['token'])


    def getAuthorizeUrl(self, responseType='code', display='',state='', scope=[]):
        params = {}
        params['client_id'] = self.clientId
        params['response_type'] = responseType
        params['redirect_uri'] = self.redirectUri

        if display:
            params['display'] = display
        if scope:
            params['scope'] = ' '.join(scope).strip()
        if state:
            params['state'] = state

        return self.getAuthorizeEndpoint() + '?' + self.buildQueryString(params)


    def getAccessTokenByAuthorizationCode(self, code):
        # Get access token  by authorization code.
        params = {}
        params['client_id'] = self.clientId
        params['client_secret'] = self.clientSecret
        params['redirect_uri'] = self.redirectUri
        params['grant_type'] = 'authorization_code'
        params['code'] = code
        params['token_type'] = 'mac'

        return self.getAccessToken(params);

    def getAccessTokenByRefreshToken(self, refreshToken):
        # Get access token  by refresh token.
        params = {}
        params['client_id'] = self.clientId
        params['client_secret'] = self.clientSecret
        params['redirect_uri'] = self.redirectUri
        params['grant_type'] = 'refresh_token'
        params['refresh_token'] = refreshToken
        params['token_type'] = 'mac'

        return self.getAccessToken(params)

    def getAccessToken(self, params):
        res = XMHttpClient.get(self, self.OAUTH2_PATH['token'], params)
        jsonObject = XMHttpClient.safeJsonLoad(self, res.read())
        return jsonObject

    def CheckIsLogin(self, uid, session):
        params = {}
        params['appId'] = self.clientId
        params['session'] = session
        params['uid'] = uid
        params['signature'] = self.xmUtils.buildSignature(params, self.clientSecret)
        return self.getErrCode(params)

    def getErrCode(self, params):
        res = XMHttpClient.get(self, '', params)
        data = res.read()
        jsonObject = XMHttpClient.safeJsonLoad(self, data)
        return jsonObject

    def getTBCode(self, params):
        res = XMHttpClient.get(self, '', params)
        data = res.read()
        return data

    def CheckIsLogin91(self, uid, session):
        XMHttpClient.set_pro_url(self, xiaomi_conf.Session_URL_91)
        params = {}
        params['AppId'] = self.clientId
        params['Act'] = 4  # 登录的act编号
        params['Uin'] = uid
        params['SessionId'] = session
        params['Sign'] = self.xmUtils.buildSignature_91(params, self.clientSecret)
        return self.getErrCode(params)

    def CheckIsLoginTB(self, session):
        XMHttpClient.set_pro_url(self, xiaomi_conf.Session_URL_TB)
        params = {}
        params['k'] = session
        return self.getTBCode(params)

    def CheckIsLoginAS(self, token):
        XMHttpClient.set_pro_url(self, xiaomi_conf.Session_URL_AS)
        params = {}
        params['token'] = token
        return self.getErrCode(params)

    def CheckIsLoginPP(self, sid):
        XMHttpClient.set_pro_url(self, xiaomi_conf.Session_URL_PP)
        params = {}
        params['id'] = int(time.time())
        params['service'] = "account.verifySession"
        params['data'] = {'sid': sid}
        params['game'] = {'gameId': int(self.clientId)}
        params['encrypt'] = "md5"
        params['sign'] = self.xmUtils.buildSignature_PP(sid, self.clientSecret)
        print "params::", params
        return self.postErrCode(params)

    def postErrCode(self, params):
        res = XMHttpClient.post(self, '', params,  header={'content-type':'text/plain'})
        jsonObject = XMHttpClient.safeJsonLoad(self, res.read(),)
        return jsonObject
Beispiel #6
0
 def __init__(self, clientId, accessToken):
     XMHttpClient.__init__(self, xiaomi_conf.API_URL)
     self.clientId = clientId
     self.accessToken = accessToken
     self.xmUtils = XMUtils()
     self.host = urlparse(xiaomi_conf.API_URL).hostname