public async Task<ActionResult> GetWeather(CancellationToken cancellationToken)
        {
            var serviceClient = new OWMServiceClient();
            serviceClient.SetSearchCriteriaStrategy(new SearchByCity("Veliko Turnovo, bg"));
            var task = serviceClient.GetWeatherAsync(
                OpenWeatherMapWebServiceClient.ResultType.Json, cancellationToken);
            await Task.WhenAll(task);

            return getJsonConentResult(task.Result.ToString());
        }
        public async Task<ActionResult> ByIpHtml(CancellationToken cancellationToken)
        {
            var ipServiceClient = new FGIServiceClient();
            string ipAddress = getClientIp();
            var ipAddressTask = ipServiceClient.GetGeoIpInfoAsync(
                ipAddress, FreeGeoIpWebServiceClient.ResultType.Json,
                cancellationToken);
            await Task.WhenAll(ipAddressTask);

            var weatherServiceClient = new OWMServiceClient();
            weatherServiceClient.SetSearchCriteriaStrategy(
                new SearchByGeolocation(
                    ipAddressTask.Result.latitude,
                    ipAddressTask.Result.longitude
                    ));

            var weatherTask = weatherServiceClient.GetWeatherAsync(OpenWeatherMapWebServiceClient.ResultType.Html,
                cancellationToken);

            await Task.WhenAll(weatherTask);

            return Content(weatherTask.Result.ToString());
        }
        public async Task<ActionResult> ByCityHtml(string cityName, CancellationToken cancellationToken)
        {
            var weatherServiceClient = new OWMServiceClient();
            weatherServiceClient.SetSearchCriteriaStrategy(
                new SearchByCity(cityName));

            var weatherTask = weatherServiceClient.GetWeatherAsync(OpenWeatherMapWebServiceClient.ResultType.Html,
                cancellationToken);

            await Task.WhenAll(weatherTask);

            return Content(weatherTask.Result.ToString());
        }