public async Task RESTRequestTest_GetNullServiceParams() { RESTRequestParameters parameters = null; var response = await _restRequest.Get(parameters); Assert.NotEmpty(response.Error); Assert.Contains(response.Error, e => e.Message.Contains("Service request parameters are null")); Assert.Contains(response.Error, e => e.ErrorLevel.Equals(LogLevel.Error)); }
public async Task RESTRequestTest_PostNullRequest() { var parameters = new RESTRequestParameters() { Url = "https://example.com" }; var response = await _restRequest.Post(parameters, null); Assert.NotEmpty(response.Error); Assert.Contains(response.Error, e => e.Message.Contains("Invalid request object")); Assert.Contains(response.Error, e => e.ErrorLevel.Equals(LogLevel.Error)); }
public async Task RESTRequestTest_GetRequest() { var headers = new Dictionary <string, string>() { { "OperationId", $"{Guid.NewGuid()}" } }; var parameters = new RESTRequestParameters() { Url = "https://example.com", Headers = headers }; var response = await _restRequest.Get(parameters); Assert.NotNull(response.Result); Assert.Empty(response.Error); Assert.Equal(_testOutputClass.Message, response.Result.Message); }
public async Task RESTRequestTest_GetRequestWithQueryString() { var headers = new Dictionary <string, string>() { { "OperationId", $"{Guid.NewGuid()}" } }; var parameters = new RESTRequestParameters() { Url = "https://example.com", Headers = headers }; var query = new Dictionary <string, string>() { { "input", "1234 street, city, state 12345" }, { "key", "AFB139F" }, { "sessiontoken", "12345" } }; var response = await new RESTRequest <OutputClass, Dictionary <string, string> >(_httpClient).Get(parameters, query); Assert.NotNull(response.Result); Assert.Empty(response.Error); Assert.Equal(_testOutputClass.Message, response.Result.Message); }
public Task <BusinessResult <TResult> > Post(RESTRequestParameters parameters, TRequest serviceRequest) { return(null); }
/// <summary> /// Place Autocomplete search request and response processor /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <BusinessResult <SearchPlacesResponse> > ExecuteAsync(SearchPlacesRequest request) { var result = new BusinessResult <SearchPlacesResponse>() { Result = new SearchPlacesResponse() }; if (request == null) { result.Error.Add(new BusinessError($"{this.GetType().FullName}.ExecuteAsync", LogLevel.Error, "Invalid request: request object is null", null, null)); return(result); } if (string.IsNullOrEmpty(request.Address)) { result.Error.Add(new BusinessError($"{this.GetType().FullName}.ExecuteAsync", LogLevel.Error, "Invalid request: search address is invalid", null, request?.OperationId)); return(result); } if (string.IsNullOrEmpty(request.ApiKey)) { result.Error.Add(new BusinessError($"{this.GetType().FullName}.ExecuteAsync", LogLevel.Error, "Invalid ApiKey", null, request?.OperationId)); return(result); } if (string.IsNullOrWhiteSpace(request.OperationId)) { request.OperationId = $"{Guid.NewGuid()}"; } try { // generate request var restServiceParameters = new RESTRequestParameters() { Url = request.PlaceBaseUrl, CancellationToken = request.CancellationToken, }; var restRequest = CreateRequestDictionary(request); // make service request var restService = await _restService.Get(restServiceParameters, restRequest.Result); result.Error.AddRange(restService.Error); // check response status if (!string.IsNullOrEmpty(restService.Result?.Error_message)) { result.Error.Add(new BusinessError(LogLevel.Error, restService.Result.Error_message, null, request.OperationId)); } if (!restService.Result?.Status?.Equals($"{PlaceResponseStatus.OK}") ?? true) { result.Error.Add(new BusinessError(LogLevel.Error, $"Reponse Status: {restService.Result.Status}", null, request.OperationId)); } if (result.Error.Count == 0) { // process response result.Result.Status = restService.Result.Status; result.Result.SessionToken = request.SessionToken; result.Result.OperationId = string.IsNullOrEmpty(result.Result.OperationId) ? request.OperationId : result.Result.OperationId; result.Result.Predictions = new List <SearchPlacePrediction>(); foreach (var predicition in restService.Result.Predictions) { var searchPlacePredicition = new SearchPlacePrediction() { Description = predicition.Description, Id = predicition.Id, PlaceId = predicition.Place_id, Reference = predicition.Reference, Types = predicition.Types.ToList(), DistanceMeters = predicition.Distance_meters, }; result.Result.Predictions.Add(searchPlacePredicition); } } } catch (Exception ex) { result.Error.Add(new BusinessError($"{this.GetType().FullName}.ExecuteAsync", LogLevel.Critical, "Exception found", ex, request.OperationId)); } return(result); }