コード例 #1
0
        public BaseSearchRequest GetReceivedSearchRequest()
        {
            BaseSearchRequest receivedSReq = (BaseSearchRequest)this;

            receivedSReq.ID = TheReceivedID;
            return(receivedSReq);
        }
コード例 #2
0
 public BESearchRequest(BaseSearchRequest baseSource)
     : base(baseSource)
 {
     TheStatus         = Status.New;
     TheReceivedID     = baseSource.ID;
     ActiveExecutionID = -1;
 }
コード例 #3
0
ファイル: PlanSearchService.cs プロジェクト: NT-D/TravelBotv4
        public async Task <BaseSearchResult> Search(BaseSearchRequest req)
        {
            try
            {
                var response = await HttpClient.GetStringAsync($"{Url}?{req.QueryString}");

                return(JsonConvert.DeserializeObject <PlansResult>(response));
            }
            catch (Exception)
            {
                return(new PlansResult());
            }
        }
コード例 #4
0
        public async Task <IHttpActionResult> PostSearchRequest(BaseSearchRequest baseSearchRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            BESearchRequest theSearchRequest;
            BESearchRequest newBESearchRequest = new BESearchRequest(baseSearchRequest);

            try {
                theSearchRequest = await dbHandlerService.StoreOrUpdateSearchRequest(newBESearchRequest);

                IMasterActor theMasterActor = ActorProxy.Create <IMasterActor>(new ActorId(theSearchRequest.ID));
                await theMasterActor.FulfillSearchRequestAsync(theSearchRequest);
            } catch {
                return(InternalServerError());
            }

            return(Ok());
        }
コード例 #5
0
        public async Task <T> GetData <T>(string path, BaseSearchRequest request) where T : BaseSearchResponse
        {
            request.apiKey = this._apiKey;
            var json          = JsonConvert.SerializeObject(request);
            var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
            var url           = $"{this._host}/{this._apiVersion}/{this._format}/{path}";

            using (var client = new HttpClient())
            {
                var response = await client.PostAsync(url, stringContent);

                var responseString = await response.Content.ReadAsStringAsync();

                var serialized = JsonConvert.DeserializeObject <T>(responseString);

                if (!serialized.success)
                {
                    throw new Exception(serialized.errors[0]);
                }

                return(serialized);
            }
        }
コード例 #6
0
        private async Task <TResponse> SendRequestAsync <TResponse>(
            string path,
            BaseSearchRequest request,
            CancellationToken cancellationToken)
            where TResponse : BaseSearchResponse
        {
            string responseBody;

            try
            {
                request.apiKey = ApiKey;

                var requestJson    = JsonConvert.SerializeObject(request);
                var requestContent = new StringContent(requestJson, Encoding.UTF8, "application/json");

                using (var client = new HttpClient())
                {
                    var httpResponse = await client.PostAsync(
                        $"{ApiUrl}/{ApiVersion}/{Format}/{path}",
                        requestContent,
                        cancellationToken);

                    responseBody = await httpResponse.Content.ReadAsStringAsync();

                    if (!httpResponse.IsSuccessStatusCode)
                    {
                        throw new NovaPoshtaUkraineClientException($"Request to API failed, response code {(int)httpResponse.StatusCode}, body: {responseBody}");
                    }
                }
            }
            catch (OperationCanceledException)
            {
                throw;
            }
            catch (NovaPoshtaUkraineClientException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new NovaPoshtaUkraineClientException("API request failed.", ex);
            }

            TResponse response;

            try
            {
                response = JsonConvert.DeserializeObject <TResponse>(responseBody);
            }
            catch (Exception ex)
            {
                throw new NovaPoshtaUkraineClientException("Bad format of API response.", ex);
            }

            if (response == null)
            {
                throw new NovaPoshtaUkraineClientException("API response is null.");
            }

            if (!response.success)
            {
                var errors = response.errors ?? new string[0];
                throw new NovaPoshtaUkraineClientException($"API response is not successful, errors: {string.Join(", ", errors)}.");
            }

            return(response);
        }
コード例 #7
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="source"></param>
 /// <param name="request"></param>
 /// <returns></returns>
 public static async Task <List <T> > ToPagedListAsync <T>(this IQueryable <T> source, BaseSearchRequest request)
 {
     return(await source.ToPagedListAsync(request.PageIndex, request.PageSize));
 }
コード例 #8
0
ファイル: PlanSearchService.cs プロジェクト: NT-D/TravelBotv4
 public async Task <BaseSearchResult> SearchAsync(BaseSearchRequest req)
 {
     return(await Search(req));
 }