def refreshAccessToken(refreshToken): soclogging.logDebug(2, "Refreshing access token") url = parameters.getParameter('baseUrl') + '/api/v1/user/oauth2/token' data = 'grant_type=refresh_token&redirect_uri=https://www.getpostman.com/oauth2/callback&refresh_token=' + refreshToken headers = { 'Authorization': parameters.getParameter('basicToken'), 'Content-type': 'application/x-www-form-urlencoded', 'Content-Length': str(len(data)), 'Host': parameters.getParameter('host'), 'Connection': 'close', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'okhttp/3.10.0' } try: response = kiahttp.postHTTP( url=url, headers=headers, data=data, timeout=parameters.getParameter('reqTimeout')) except: raise try: accessToken = json.loads(response) accessToken['refresh_token'] = refreshToken except: soclogging.logDebug(0, "Token request failed, invalid response") soclogging.logDebug(2, response) raise soclogging.logDebug(2, "Access token = " + accessToken['access_token']) return accessToken
def getAuthToken(authCode): soclogging.logDebug(2, "Requesting access token") url = parameters.getParameter('baseUrl') + '/api/v1/user/oauth2/token' data = 'grant_type=authorization_code&redirect_uri=' + parameters.getParameter( 'baseUrl') + '%2Fapi%2Fv1%2Fuser%2Foauth2%2Fredirect&code=' + authCode headers = { 'Authorization': parameters.getParameter('basicToken'), 'Content-type': 'application/x-www-form-urlencoded', 'Content-Length': str(len(data)), 'Host': parameters.getParameter('host'), 'Connection': 'close', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'okhttp/3.10.0' } try: response = kiahttp.postHTTP( url=url, headers=headers, data=data, timeout=parameters.getParameter('reqTimeout')) except: raise try: accessToken = json.loads(response) except: soclogging.logDebug(0, "Token request failed, invalid response") soclogging.logDebug(2, response) raise soclogging.logDebug(2, "Access token = " + accessToken['access_token']) return accessToken
def doPrewakeup(vehicleId): soclogging.logDebug(2, "Triggering Pre-Wakeup") url = parameters.getParameter( 'baseUrl') + '/api/v1/spa/vehicles/' + vehicleId + '/control/engine' data = { "action": "prewakeup", "deviceId": parameters.getParameter('deviceId') } headers = { 'Authorization': parameters.getParameter('tokenType') + ' ' + parameters.getParameter('accessToken'), 'ccsp-device-id': parameters.getParameter('deviceId'), 'ccsp-application-id': parameters.getParameter('appId'), 'offset': '1', 'Content-Type': 'application/json;charset=UTF-8', 'Content-Length': str(len(data)), 'Host': parameters.getParameter('host'), 'Connection': 'close', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'okhttp/3.10.0', 'Stamp': stamps.getStamp() } try: response = kiahttp.postHTTP( url=url, data=data, headers=headers, timeout=parameters.getParameter('statusTimeout')) except: raise return
def setLanguage(cookies): soclogging.logDebug(2, "Setting language") url = parameters.getParameter('baseUrl') + '/api/v1/user/language' headers = {'Content-type': 'application/json'} data = {"lang": "en"} try: response = kiahttp.postHTTP( url=url, data=data, headers=headers, cookies=cookies, timeout=parameters.getParameter('reqTimeout')) except: raise return
def getDeviceId(): soclogging.logDebug(2, "Requesting DeviceId") url = parameters.getParameter( 'baseUrl') + '/api/v1/spa/notifications/register' data = { "pushRegId": parameters.getParameter('GCMSenderId'), "pushType": "GCM", "uuid": str(uuid.uuid1()) } headers = { 'ccsp-service-id': parameters.getParameter('clientId'), 'Content-type': 'application/json;charset=UTF-8', 'Content-Length': str(len(data)), 'Host': parameters.getParameter('host'), 'Connection': 'close', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'okhttp/3.10.0', 'Stamp': stamps.getStamp() } try: response = kiahttp.postHTTP( url=url, data=data, headers=headers, timeout=parameters.getParameter('reqTimeout')) except: raise try: responseDict = json.loads(response) deviceId = responseDict['resMsg']['deviceId'] except: soclogging.logDebug(1, "Could not receive DeviceId, invalid response") soclogging.logDebug(2, response) raise soclogging.logDebug(2, "DeviceId = " + deviceId) return deviceId
def getAuthCode(cookies): soclogging.logDebug(2, "Sending username/password") url = parameters.getParameter('baseUrl') + '/api/v1/user/integrationinfo' headers = {'Content-type': 'application/json'} try: response = kiahttp.getHTTP( url=url, headers=headers, cookies=cookies, timeout=parameters.getParameter('reqTimeout')) except: raise try: responseDict = json.loads(response) userId = responseDict['userId'] serviceId = responseDict['serviceId'] soclogging.logDebug(2, "UserId = " + userId) soclogging.logDebug(2, "ServiceId = " + serviceId) except: soclogging.logDebug(0, "Login failed, invalid response") soclogging.logDebug(2, response) raise url = 'https://eu-account.' + parameters.getParameter( 'brand' ) + '.com/auth/realms/eu' + parameters.getParameter( 'brand' ) + 'idm/protocol/openid-connect/auth?client_id=' + parameters.getParameter( 'authClientId' ) + '&scope=openid%20profile%20email%20phone&response_type=code&hkid_session_reset=true&redirect_uri=' + parameters.getParameter( 'baseUrl' ) + '/api/v1/user/integration/redirect/login&ui_locales=en&state=' + serviceId + ':' + userId headers = {} try: response = kiahttp.getHTTP( url=url, headers=headers, cookies=cookies, timeout=parameters.getParameter('reqTimeout')) except: raise left = response.find('action="') + 8 right = response.find('"', left) url = response[left:right].replace('&', '&') data = urlparse.urlencode({ 'username': parameters.getParameter('accountName'), 'password': parameters.getParameter('accountPassword'), 'credentialId': '', 'rememberMe': 'on' }) headers = { 'Content-type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_1 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0 Mobile/15B92 Safari/604.1' } cookiesForm = {'AUTH_SESSION_ID': kiahttp.lastCookies['AUTH_SESSION_ID']} try: response = kiahttp.postHTTP( url=url, data=data, headers=headers, cookies=cookiesForm, timeout=parameters.getParameter('reqTimeout')) parsed = urlparse.urlparse(kiahttp.lastUrl) intUserId = ''.join(parse_qs(parsed.query)['intUserId']) soclogging.logDebug(2, "intUserId = " + intUserId) except: soclogging.logDebug(0, "Login failed, invalid response") soclogging.logDebug(2, response) raise url = parameters.getParameter('baseUrl') + '/api/v1/user/silentsignin' headers = {'Content-type': 'application/json'} data = {'intUserId': intUserId} try: response = kiahttp.postHTTP( url=url, data=data, headers=headers, cookies=cookies, timeout=parameters.getParameter('reqTimeout'), allow_redirects=False) responseDict = json.loads(response) responseUrl = responseDict['redirectUrl'] parsed = urlparse.urlparse(responseUrl) authCode = ''.join(parse_qs(parsed.query)['code']) except: soclogging.logDebug(0, "Login failed, invalid response") soclogging.logDebug(2, response) raise soclogging.logDebug(2, "AuthCode = " + authCode) return authCode