public void MethodShouldNotThrowWhenStatusCodeIsNotOKAndEVisitorDoesNotRespondWithAppropriateResponseObject()
        {
            var            client       = new Client(new Core.Authentication("username", "password"));
            RestResponse   response     = new RestResponse();
            CitiesResponse cityResponse = new CitiesResponse();

            cityResponse.Records = new List <City>();
            cityResponse.Records.Add(new Models.City());

            response.Content    = JsonConvert.SerializeObject(cityResponse);
            response.StatusCode = System.Net.HttpStatusCode.Ambiguous;
            var clientResponse = client.HandleResponse <CitiesResponse>(response);

            Assert.IsTrue(true);
        }
        public void MethodShouldReturnWhateverStatusCodeServiceReturned()
        {
            var            client       = new Client(new Core.Authentication("username", "password"));
            RestResponse   response     = new RestResponse();
            CitiesResponse cityResponse = new CitiesResponse();

            cityResponse.Records = new List <City>();
            cityResponse.Records.Add(new Models.City());

            response.Content    = JsonConvert.SerializeObject(cityResponse);
            response.StatusCode = System.Net.HttpStatusCode.Ambiguous;
            var clientResponse = client.HandleResponse <CitiesResponse>(response);

            Assert.AreEqual(clientResponse.StatusCode, System.Net.HttpStatusCode.Ambiguous);
        }
        public void GivenInValidCountryName_WhenCities_WeGetCities()
        {
            var newDataSet = new TableName {
                Table = new List <Details>()
            };
            var mockData = new CitiesResponse {
                NewDataSet = newDataSet
            };

            A.CallTo(() => SoapBasedServiceGateway.GetCities(A <string> .Ignored))
            .Returns(mockData);

            var response = _sut.GetCities("Australia");

            response.Cities.Count.Should().Be(0);
        }
        public void ErrorObjectShouldBeNullIfStatusCodeIsOK()
        {
            var            client       = new Client(new Core.Authentication("username", "password"));
            RestResponse   response     = new RestResponse();
            CitiesResponse cityResponse = new CitiesResponse();

            cityResponse.Records = new List <City>();
            cityResponse.Records.Add(new Models.City());

            response.Content = JsonConvert.SerializeObject(cityResponse);

            response.StatusCode = System.Net.HttpStatusCode.OK;
            var clientResponse = client.HandleResponse <CitiesResponse>(response);

            Assert.AreEqual(clientResponse.StatusCode, System.Net.HttpStatusCode.OK);
            Assert.AreEqual(clientResponse.Error, null);
        }
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();

            INOAAService  noaaService = new Services.NOAADummyService();
            CitiesRequest request;

            try
            {
                request = JsonConvert.DeserializeObject <CitiesRequest>(requestBody);
            }
            catch (Exception ex)
            {
                return(new BadRequestObjectResult($"Failed to parse json body: {ex.Message}"));
            }

            if (request == null || !IsValidCityRequest(ref request))
            {
                return(new BadRequestObjectResult($"Bad request parameters."));
            }

            CitiesResponse response = null;

            var data = await noaaService.GetWeatherData(request.Date, request.Date, request.Temperature.Value, true);

            var resultList = new List <Models.CityData>();

            foreach (var item in data)
            {
                resultList.Add(new CityData()
                {
                    Date            = request.Date,
                    HighTemperature = item.MaxTemp,
                    Latitude        = item.Latitude.ToString(),
                    Longitude       = item.Longitude.ToString(),
                    LowTemperature  = item.MinTemp,
                    Name            = item.Location,
                });
            }
            response.Cities = resultList;

            return(new OkObjectResult(JsonConvert.SerializeObject(response)));
        }
Example #6
0
        public CitiesResponse GetCities()
        {
            var cityResponse = new CitiesResponse
            {
                Cities = new List <City>
                {
                    new City
                    {
                        Name  = "Atlanta",
                        State = "Georgia"
                    },
                    new City
                    {
                        Name  = "Duluth",
                        State = "Georgia",
                    },
                    new City
                    {
                        Name  = "Phoenix",
                        State = "Arizona"
                    },
                    new City
                    {
                        Name  = "Scottsdale",
                        State = "Arizona"
                    },
                    new City
                    {
                        Name  = "San Diego",
                        State = "California"
                    }
                }
            };

            return(cityResponse);
        }
 private void ReceiveCitiesResponse(CitiesResponse response)
 {
     PutResult(response);
 }
        /// <summary>
        /// Метод старта
        /// </summary>
        /// <param name="savedInstanceState"></param>
        protected override void OnCreate(Bundle savedInstanceState)
        {
            string query = "";

            base.OnCreate(savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);
            btn_get_cities = FindViewById <Button>(Resource.Id.btn_get_cities);
            search_text    = FindViewById <AutoCompleteTextView>(Resource.Id.search_text);
            list_cities    = FindViewById <ListView>(Resource.Id.list_cities);


            //событие для получения индекса выбранного элемента
            list_cities.ItemClick += new EventHandler <AdapterView.ItemClickEventArgs>(GetIndex);
            //событие для обращения к API
            btn_get_cities.Click += async delegate
            {
                if (search_text.Text != "")
                {
                    //чтение запроса пользователя
                    query = search_text.Text;
                    query = query.Replace(' ', '+');
                    query = query.Replace(",", "%2C");
                    //обращение к API
                    HttpClient client           = new HttpClient();
                    HttpClient client_translate = new HttpClient();
                    client.DefaultRequestHeaders.Add("user-key", apiKey);
                    client_translate.DefaultRequestHeaders.Add("X-RapidAPI-Host", "microsoft-azure-translation-v1.p.rapidapi.com");
                    client_translate.DefaultRequestHeaders.Add("X-RapidAPI-Key", "44aa189e74mshaa49add707f3528p1d96acjsn216ddd330fe5");
                    try
                    {
                        HttpResponseMessage response = null;
                        //открытие диалога загрузки
                        Android.Support.V7.App.AlertDialog dialog =
                            new EDMTDialogBuilder().SetContext(this).SetMessage("Please wait..").Build();
                        if (!dialog.IsShowing)
                        {
                            dialog.Show();
                        }
                        //обращение к API переводчика
                        try
                        {
                            response = await client_translate.GetAsync("https://microsoft-azure-translation-v1.p.rapidapi.com/" +
                                                                       "translate?from=ru&to=en&text=" + query);
                        }
                        catch
                        {
                            Toast.MakeText(this, "Отсутсвует подключение к интернету!", ToastLength.Long).Show();
                            return;
                        }
                        try
                        {
                            //обработка запроса
                            query = await response.Content.ReadAsStringAsync();

                            query = query.Split('>')[1];
                            query = query.Split('<')[0];
                        }
                        catch (IndexOutOfRangeException)
                        {
                            Toast.MakeText(this, "Некорректный запрос", ToastLength.Long).Show();
                            return;
                        }
                        response = null;
                        try
                        {
                            response = await client.GetAsync(BasePath + "/cities?q=" + query);
                        }
                        catch
                        {
                            Toast.MakeText(this, "Отсутсвует подключение к интернету!", ToastLength.Long).Show();
                            return;
                        }
                        //десериализация
                        responce_cities = JsonConvert.DeserializeObject <CitiesResponse>(await response.Content.ReadAsStringAsync());


                        List <string> city_names = new List <string>();
                        response = null;
                        //перевод ответа
                        for (int i = 0; i < responce_cities.location_suggestions.Count; i++)
                        {
                            string name = responce_cities.location_suggestions[i].name;
                            name     = name.Replace(' ', '+');
                            name     = name.Replace(",", "%2C");
                            response = await client_translate.GetAsync("https://microsoft-azure-translation-v1.p.rapidapi.com/" +
                                                                       "translate?from=en&to=ru&text=" + name);

                            try
                            {
                                name = await response.Content.ReadAsStringAsync();

                                name = name.Split('>')[1];
                                name = name.Split('<')[0];
                            }
                            catch (IndexOutOfRangeException)
                            {
                                return;
                            }
                            responce_cities.location_suggestions[i].name = name;
                            city_names.Add(name);
                        }
                        //инициализация списка для вывода на экран
                        if (city_names.Count == 0)
                        {
                            Toast.MakeText(this, "Ничего не найдено!", ToastLength.Long).Show();
                        }
                        else
                        {
                            var adapter = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleListItem1, city_names);
                            list_cities.Adapter = adapter;
                        }

                        if (dialog.IsShowing)
                        {
                            dialog.Dismiss();
                        }
                    }
                    catch
                    {
                        Toast.MakeText(this, "Отсутсвует подключение к интернету!", ToastLength.Long).Show();
                    }
                }
                else
                {
                    Toast.MakeText(this, "Введите город", ToastLength.Long).Show();
                }
            };
        }