예제 #1
0
        /// <summary>
        /// Check password from SOL api.
        /// </summary>
        /// <param name="customerVerifyRequest"></param>
        /// <param name="cdkCustomer"></param>
        /// <returns></returns>
        public async Task <ApiResponse> CheckPassword(CustomerVerifyRequest customerVerifyRequest, CdkCustomer cdkCustomer, string partnerKey)
        {
            if (customerVerifyRequest == null)
            {
                throw new ArgumentNullException(nameof(customerVerifyRequest));
            }
            if (cdkCustomer == null)
            {
                throw new ArgumentNullException(nameof(cdkCustomer));
            }
            var requestBody = UtilityHelper.SerializeObject(new
            {
                RooftopId = customerVerifyRequest.RoofTopId
            });
            var request = new ApiRequest
            {
                Body        = requestBody,
                Method      = HttpVerbs.POST.ToString(),
                Url         = CombineUrl(GetCdkAutolineUrl(_cdkAutolineUrl, customerVerifyRequest.CommunityId), CheckPasswordUrl),
                ContentType = Constants.ContentTypeJson
            };

            var hashCode =
                _encryptedTokenCodeService.GetEncryptedTokenCode(cdkCustomer.Token.ToString(), cdkCustomer, partnerKey, true);

            AddRequestHeader(request, $"{Constants.DataHubHashHeaderValuePrefix}{hashCode}");
            return(await _restApiClient.Invoke <CustomerResponse>(request));
        }
예제 #2
0
        /// <summary>
        /// Activate token generated by API(/RequestToken).
        /// </summary>
        /// <param name="communityId"></param>
        /// <param name="appToken"></param>
        /// <returns></returns>
        public async Task <ApiResponse> ActivateToken(string communityId, string appToken, string partnerKey)
        {
            var request = new ApiRequest()
            {
                Body        = string.Empty,
                Method      = HttpVerbs.POST.ToString(),
                Url         = CombineUrl(GetCdkAutolineUrl(_cdkAutolineUrl, communityId), ActivateTokenUrl),
                ContentType = Constants.ContentTypeJson
            };

            var hashCode = _encryptedTokenCodeService.GetEncryptedTokenCode(appToken, null, partnerKey);

            AddRequestHeader(request, $"{Constants.DataHubHashHeaderValuePrefix}{hashCode}");
            return(await _restApiClient.Invoke <CustomerResponse>(request));
        }
예제 #3
0
        public async Task <GetRecommendedServicesResponse> GetRecommendedServices(GetRecommendedServicesRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var requestBody = UtilityHelper.SerializeObject(new
            {
                request.RooftopId,
                request.MakeCode,
                request.ModelCode,
                request.EstOdometer,
                request.EstVehicleAgeMonths
            });

            var cdkApiRequest = new ApiRequest
            {
                Body   = requestBody,
                Method = HttpVerbs.POST.ToString(),
                Url    = CombineUrl(GetCdkAutolineUrl(_cdkAutolineUrl,
                                                      request.CommunityId), GetRecommendedServiceUrl),
                ContentType = Constants.ContentTypeJson
            };

            var appToken = await _tokenService.GetAppToken(request.CommunityId, request.RooftopId);

            AddRequestHeader(cdkApiRequest, $"{Constants.DataHubAppTokenHeaderValuePrefix}{appToken}");

            var startTime = DateTime.Now;
            var timer     = System.Diagnostics.Stopwatch.StartNew();
            var getRecommendedServiceApiResponse = await _restApiClient.Invoke <CDKRecommendedServiceResponse>(cdkApiRequest);

            _telemetryClient?.TrackDependency("CDKAutolineService", "GetRecommendedService",
                                              JsonConvert.SerializeObject(cdkApiRequest), startTime,
                                              timer.Elapsed,
                                              getRecommendedServiceApiResponse != null);
            _telemetryClient?.TrackTrace($"CDKAutolineService GetRecommendedService response: {JsonConvert.SerializeObject(getRecommendedServiceApiResponse)}");

            if (getRecommendedServiceApiResponse?.Result == null || !getRecommendedServiceApiResponse.Success ||
                !(getRecommendedServiceApiResponse.Result is CDKRecommendedServiceResponse cdkRecommendedServiceResponse))
            {
                throw new CDKAutolineException(UtilityHelper.SerializeObject(getRecommendedServiceApiResponse?.Errors));
            }

            return(cdkRecommendedServiceResponse.Results);
        }
        internal async Task <ApiResponse> RequestCreateServiceBooking(CdkCreateServiceBookingRequest serviceRequest, string communityId, string token)
        {
            IsoDateTimeConverter converter = new IsoDateTimeConverter {
                DateTimeFormat = ServiceBookingDateFormat
            };
            var requestBody = UtilityHelper.SerializeObject(serviceRequest, converter);

            var request = new ApiRequest
            {
                Body        = requestBody,
                Method      = HttpVerbs.POST.ToString(),
                Url         = CombineUrl(GetCdkAutolineUrl(_cdkAutolineUrl, communityId), CreateServiceBookingUrl),
                ContentType = Constants.ContentTypeJson,
                Accept      = Constants.ContentTypeJson
            };

            AddRequestHeader(request,
                             $"{Constants.DataHubTokenHeaderValuePrefix}{token}");
            return(await _restApiClient.Invoke <CreateServiceBookingResponse>(request));
        }