コード例 #1
0
ファイル: DaDataClient.cs プロジェクト: Sellec/OnWeb
        private Response <T> Execute <T>(string resource, bool isPost, Entities.Suggestions.SuggestQuery query) where T : class, new()
        {
            //todo учесть isBool

            var client = new System.Net.Http.HttpClient();

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Add("Authorization", "Token " + _token);

            var url = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/" + resource;

            var fieldsDictionary     = query.GetType().GetFields().ToDictionary(x => x.Name, x => x.GetValue(query)?.ToString());
            var propertiesDictionary = query.GetType().GetProperties().ToDictionary(x => x.Name, x => x.GetValue(query)?.ToString());
            var pairsDictionary      = fieldsDictionary.Union(propertiesDictionary).Where(x => !string.IsNullOrEmpty(x.Key) && !string.IsNullOrEmpty(x.Value)).ToList();

            if (pairsDictionary.Count > 0)
            {
                url += "?" + string.Join("&", pairsDictionary.Select(x => $"{x.Key}={Uri.EscapeDataString(x.Value)}"));
            }

            var responseTask = client.GetAsync(url);//,, new System.Net.Http.StringContent(serialized, System.Text.Encoding.UTF8, "application/json"));

            responseTask.Wait();
            var answerTask = responseTask.Result.Content.ReadAsStringAsync();

            answerTask.Wait();
            if (responseTask.Result.IsSuccessStatusCode)
            {
                var answerObject = JsonConvert.DeserializeObject <T>(answerTask.Result);//, _converter);
                return(new Response <T>(new ResponseBase()
                {
                    IsSuccess = true, Code = (int)responseTask.Result.StatusCode, Detail = null
                })
                {
                    Data = answerObject
                });
            }
            else
            {
                var answerObject = JsonConvert.DeserializeObject <SuggestResponseInternalError>(answerTask.Result);//, _converter);
                var message      = answerObject.message;
                if (responseTask.Result.StatusCode == HttpStatusCode.Forbidden)
                {
                    message = "Сервис подсказок недоступен. Проверьте раздел справки https://dadata.ru/api/suggest/#why-403-name";
                }
                return(new Response <T>(new ResponseBase()
                {
                    IsSuccess = false, Code = (int)responseTask.Result.StatusCode, Detail = message
                }));
            }
        }
コード例 #2
0
ファイル: DaDataClient.cs プロジェクト: Sellec/OnWeb
        public Response <Entities.Suggestions.SuggestEmailResponse> QueryEmail(string email)
        {
            var query = new Entities.Suggestions.SuggestQuery(email);

            return(Execute <Entities.Suggestions.SuggestEmailResponse>(EMAIL_RESOURCE, true, query));
        }