Example #1
0
        public async Task <LoginResponse> LoginAsync(string encryptionToken,
                                                     string userName, string password, CancellationToken cancelToken)
        {
            var crypt = _blowfishFactory(Encoding.ASCII.GetBytes(encryptionToken));

            var paddedPassword = crypt.ApplyPkcs5Padding(password);
            var passwordBytes  = Encoding.ASCII.GetBytes(paddedPassword);

            var base64EncryptedBytes  = crypt.Encrypt_ECB(passwordBytes);
            var base64EncryptedString = Convert.ToBase64String(base64EncryptedBytes);

            var args = new BodyArgs();

            args.Add("UserId", userName);
            args.Add("cartype");
            args.Add("custom_sessionid");
            args.Add("initial_app_strings", _apiKey);
            args.Add("tz");
            args.Add("lg", "en-US");
            args.Add("DCMID");
            args.Add("VIN");;
            args.Add("RegionCode", "NNA");
            args.Add("Password", base64EncryptedString);

            var response = await PostAsync <LoginResponse>(_loginRoute, args, cancelToken);

            return(response);
        }
Example #2
0
        public async Task <IDictionary <string, bool> > GetSettingsAsync(CancellationToken cancelToken)
        {
            var args = new BodyArgs();

            args.Add("cartype");
            args.Add("custom_sessionid");
            args.Add("initial_app_strings", _apiKey);
            args.Add("tz");
            args.Add("lg", "en-US");
            args.Add("DCMID");
            args.Add("VIN");
            args.Add("RegionCode", "NNA");

            var response = await PostAsync <CountryResponse>(_countryRoute, args, cancelToken);

            return(response.Settings);
        }
        public Task <BatteryStatusResponse> GetStatusAsync(string sessionId, CancellationToken cancelToken)
        {
            var args = new BodyArgs();

            args.Add("cartype");
            args.Add("custom_sessionid");
            args.Add("initial_app_strings", _apiKey);
            args.Add("tz");
            args.Add("lg", "en-US");
            args.Add("DCMID");
            args.Add("VIN");
            args.Add("RegionCode", "NNA");

            var result = this.PostAsync <BatteryStatusResponse>(_batteryStatusRoute, args, cancelToken);

            return(result);
        }
        public async Task <string> GetEncryptionTokenAsync(CancellationToken cancelToken)
        {
            var args = new BodyArgs();

            args.Add("cartype");
            args.Add("custom_sessionid");
            args.Add("initial_app_strings", _apiKey);
            args.Add("tz");
            args.Add("lg", "en-US");
            args.Add("DCMID");
            args.Add("VIN");
            args.Add("RegionCode", "NNA");

            var response = await PostAsync <InitialAppResponse>(_initialAppRoute, args, cancelToken);

            return(response.EncryptionKey);
        }
Example #5
0
        protected async Task <TResponse> PostAsync <TResponse>(string route, BodyArgs body, CancellationToken cancelToken)
        {
            var restResponse = await _client.PostAsync <IEnumerable <KeyValuePair <string, string> >, TResponse>(route, body.Args, cancelToken);

            return(ExtractResponse(restResponse));
        }