Exemple #1
0
        public void ConstructorDefaultTest()
        {
            var request = new TimeZoneRequest();

            Assert.IsNotNull(request.TimeStamp);
            Assert.AreEqual(Language.English, request.Language);
        }
        public async Task Test_SerializationAsync()
        {
            // Get the client.
            ITimeZoneClient client = Fixture.GetRequiredService <ITimeZoneClient>();

            // Create the request.
            var request = new TimeZoneRequest(
                // The White House
                38.8977M,
                -77.0365M,
                // 🎆🎆 July 4th, 2020 🎆🎆
                new DateTime(2020, 07, 04)
                );

            // Execute.
            TimeZoneResponse results = await client
                                       .GetTimeZoneAsync(request, default)
                                       .ConfigureAwait(false);

            // Create the container.
            var expected = new Container <TimeZoneResponse> {
                Value = results
            };

            // Serialize to a string.
            string json = JsonSerializer.Serialize(expected);

            // Serialize again.
            var actual = JsonSerializer.Deserialize <Container <TimeZoneResponse> >(json);

            // Compare.
            Assert.Equal(expected.Value.Status, actual.Value.Status);
            Assert.Equal(expected.Value.TimeZoneId, actual.Value.TimeZoneId);
            Assert.Equal(expected.Value.RawOffset, actual.Value.RawOffset);
        }
        public async Task Test_GetTimeZoneAsync()
        {
            // Get the client.
            ITimeZoneClient client = Fixture.GetRequiredService <ITimeZoneClient>();

            // Create the request.
            var request = new TimeZoneRequest(
                // The White House
                38.8977M,
                -77.0365M,
                // 🎆🎆 July 4th, 2020 🎆🎆
                new DateTime(2020, 07, 04)
                );

            // Execute.
            TimeZoneResponse actual = await client
                                      .GetTimeZoneAsync(request, default)
                                      .ConfigureAwait(false);

            // Assert.
            Assert.Equal(Status.OK, actual.Status);
            Assert.Equal(TimeSpan.FromHours(1), actual.DstOffset);
            Assert.Equal(TimeSpan.FromHours(-5), actual.RawOffset);
            Assert.Equal("America/New_York", actual.TimeZoneId);
            Assert.Equal("Eastern Daylight Time", actual.TimeZoneName);
        }
Exemple #4
0
        /// <summary>
        /// This API returns current, historical, and future time zone information for the specified IANA time zone ID.
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public virtual async Task <Response <TimezoneResult> > GetTimezoneById(TimeZoneRequest req)
        {
            var res = await ExecuteRequest <TimezoneResult, TimeZoneRequest>
                          ("https://atlas.microsoft.com/timezone/byId/json", req);

            return(res);
        }
Exemple #5
0
        public async Task <string> GetTimeForPoint(Tuple <double, double> pointA, DateTimeOffset dateTimeOffset)
        {
            var azureMaps = new AzureMapsToolkit.AzureMapsServices(GetMapKey());

            if (azureMaps == null)
            {
                logger.LogError("Failed to get instance of azuremaps.");
                throw new Exception("Failed to get instance of azuremaps");
            }

            var timezoneRequest = new TimeZoneRequest
            {
                Query     = $"{pointA.Item1},{pointA.Item2}",
                TimeStamp = dateTimeOffset.UtcDateTime.ToString("O")
            };

            logger.LogInformation("Getting time for timezoneRequest: {0}", JsonSerializer.Serialize(timezoneRequest));

            var response = await azureMaps.GetTimezoneByCoordinates(timezoneRequest).ConfigureAwait(false);

            logger.LogInformation("Response from getting time for timezoneRequest: {0}", JsonSerializer.Serialize(response));

            if (response.HttpResponseCode != (int)HttpStatusCode.OK && response.HttpResponseCode != 0)
            {
                throw new Exception($"Error getting timezonebycoordinates: {response}");
            }

            return(response?.Result?.TimeZones[0]?.ReferenceTime?.WallTime);
        }
Exemple #6
0
        public void TimeZoneWhenLocationIsNullTest()
        {
            var request = new TimeZoneRequest();

            var exception = Assert.Throws <ArgumentException>(() => GoogleMaps.TimeZone.Query(request));

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "Location is required.");
        }
        public void GetQueryStringParametersTest()
        {
            var request = new TimeZoneRequest
            {
                Key      = "abc",
                Location = new Location(40.7141289, -73.9614074)
            };

            Assert.DoesNotThrow(() => request.GetQueryStringParameters());
        }
Exemple #8
0
        public void GetQueryStringParametersWhenLocationIsNullTest()
        {
            var request = new TimeZoneRequest
            {
                Key = "key"
            };

            var exception = Assert.Throws <ArgumentException>(() => request.GetQueryStringParameters());

            Assert.AreEqual(exception.Message, "'Location' is required");
        }
Exemple #9
0
        public void GetQueryStringParametersWhenKeyIsEmptyTest()
        {
            var request = new TimeZoneRequest
            {
                Key = string.Empty
            };

            var exception = Assert.Throws <ArgumentException>(() => request.GetQueryStringParameters());

            Assert.AreEqual("'Key' is required", exception.Message);
        }
Exemple #10
0
        public void TimeZone_Correct_OverviewPath()
        {
            TimeZoneRequest request = new TimeZoneRequest();

            request.Location = new Location(55.866413, 12.501063);
            request.Language = "en";

            TimeZoneResponse result = GoogleMaps.TimeZone.Query(request);

            Assert.AreEqual(GoogleMapsApi.Entities.TimeZone.Response.Status.OK, result.Status);
        }
        public void TimeZone_Correct_OverviewPath()
        {
            TimeZoneRequest request = new TimeZoneRequest();

            request.Location = new Location(55.866413, 12.501063);
            request.Language = "en";

            TimeZoneResponse result = GoogleMaps.TimeZone.Query(request);

            AssertInconclusive.NotExceedQuota(result);
            Assert.AreEqual(Status.OK, result.Status);
        }
Exemple #12
0
        public void GetTimeZoneById()
        {
            var am  = new AzureMapsToolkit.AzureMapsServices(_KEY);
            var req = new TimeZoneRequest
            {
                Query   = "Europe/Stockholm",
                Options = TimezoneOptions.All
            };
            var r = am.GetTimezoneById(req).Result;

            Assert.Null(r.Error);
            Assert.Equal("SE", r.Result.TimeZones[0].Countries[0].Code);
        }
        public void GetUriTest()
        {
            var request = new TimeZoneRequest
            {
                Key      = "abc",
                Location = new Location(40.7141289, -73.9614074)
            };

            var uri = request.GetUri();

            Assert.IsNotNull(uri);
            Assert.AreEqual($"/maps/api/timezone/json?key={request.Key}&language={request.Language.ToCode()}&location={Uri.EscapeDataString(request.Location.ToString())}&timestamp={request.TimeStamp.DateTimeToUnixTimestamp()}", uri.PathAndQuery);
        }
Exemple #14
0
        public void GetTimeZoneByCoordinates()
        {
            var am  = new AzureMapsToolkit.AzureMapsServices(_KEY);
            var req = new TimeZoneRequest
            {
                Query   = "47.0,-122",
                Options = TimezoneOptions.All
            };
            var r = am.GetTimezoneByCoordinates(req).Result;

            Assert.Null(r.Error);
            Assert.Equal("US", r.Result.TimeZones[0].Countries[0].Code);
        }
Exemple #15
0
        public void TimeZoneWhenAsyncTest()
        {
            var location = new Coordinate(40.7141289, -73.9614074);
            var request  = new TimeZoneRequest
            {
                Key      = this.ApiKey,
                Location = location
            };

            var response = GoogleMaps.TimeZone.QueryAsync(request).Result;

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
        }
Exemple #16
0
        public void TimeZoneParseFailedRequest()
        {
            TimeZoneCallResult result = TimeZoneRequest.Make(-999999m, -99999m);
            Assert.AreEqual(TimeZoneCallStatus.Unknown, result.Status);

            QueryString query = new QueryString();
            query.Add("lat", "not a latitude");
            query.Add("lng", "not a longitude");

            TimeZoneRequest request = new TimeZoneRequest(query);
            TimeZoneResponse response = request.GetResponse();

            Assert.IsTrue(response.Status == TimeZoneCallStatus.InvalidParameter || response.Status == TimeZoneCallStatus.NotFound);
        }
Exemple #17
0
        public async Task TimeZone_Correct_OverviewPathAsync()
        {
            TimeZoneRequest request = new TimeZoneRequest
            {
                Location = new Location(55.866413, 12.501063),
                Language = "en",
                ApiKey   = ApiKey
            };

            TimeZoneResponse result = await GoogleMaps.TimeZone.QueryAsync(request);

            AssertInconclusive.NotExceedQuota(result);
            Assert.AreEqual(Status.OK, result.Status);
        }
Exemple #18
0
        public void TimeZoneWhenLanguageTest()
        {
            var location = new Location(40.7141289, -73.9614074);
            var request  = new TimeZoneRequest
            {
                Location = location,
                Language = Language.German
            };

            var response = GoogleMaps.TimeZone.Query(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
            Assert.AreEqual("America/New_York", response.TimeZoneId);
        }
Exemple #19
0
        public void TimeZoneAsyncTest()
        {
            var location = new Location(40.7141289, -73.9614074);
            var request  = new TimeZoneRequest {
                Location = location
            };
            var response = GoogleMaps.TimeZone.QueryAsync(request).Result;

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
            Assert.AreEqual("America/New_York", response.TimeZoneId);
            Assert.AreEqual("GMT-05:00", response.TimeZoneName);
            Assert.AreEqual(0.00, response.OffSet);
            Assert.AreEqual(-18000.00, response.RawOffSet);
        }
Exemple #20
0
        public void TimeZoneWhenTimeStampTest()
        {
            var location = new Coordinate(40.7141289, -73.9614074);
            var request  = new TimeZoneRequest
            {
                Key       = this.ApiKey,
                Location  = location,
                TimeStamp = DateTime.Now.AddMonths(6)
            };

            var response = GoogleMaps.TimeZone.Query(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
        }
Exemple #21
0
        public void TimeZoneWhenLanguageTest()
        {
            var location = new Coordinate(40.7141289, -73.9614074);
            var request  = new TimeZoneRequest
            {
                Key      = this.ApiKey,
                Location = location,
                Language = Language.German
            };

            var response = GoogleMaps.TimeZone.Query(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
        }
        public void GetQueryStringParametersWhenLocationIsNullTest()
        {
            var request = new TimeZoneRequest
            {
                Key = this.ApiKey
            };

            var exception = Assert.Throws <ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "Location is required");
        }
Exemple #23
0
        public void TimeZoneWhenAsyncAndCancelledTest()
        {
            var location = new Location(40.7141289, -73.9614074);
            var request  = new TimeZoneRequest
            {
                Location = location
            };
            var cancellationTokenSource = new CancellationTokenSource();
            var task = GoogleMaps.TimeZone.QueryAsync(request, cancellationTokenSource.Token);

            cancellationTokenSource.Cancel();

            var exception = Assert.Throws <OperationCanceledException>(() => task.Wait(cancellationTokenSource.Token));

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "The operation was canceled.");
        }
Exemple #24
0
        public void TimeZoneWhenLocationIsNullTest()
        {
            var request = new TimeZoneRequest
            {
                Key = this.ApiKey
            };

            var exception = Assert.Throws <AggregateException>(() => GoogleMaps.TimeZone.QueryAsync(request).Wait());

            Assert.IsNotNull(exception);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Location is required");
        }
Exemple #25
0
        public void TimeZoneTest()
        {
            var location = new Location(40.7141289, -73.9614074);
            var request  = new TimeZoneRequest
            {
                Location = location
            };

            var response = GoogleMaps.TimeZone.Query(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
            Assert.AreEqual("America/New_York", response.TimeZoneId);
            Assert.AreEqual("Eastern Daylight Time", response.TimeZoneName);
            Assert.AreEqual(3600.00, response.OffSet);
            Assert.AreEqual(-18000.00, response.RawOffSet);
        }
Exemple #26
0
        public void TimeZoneWhenLanguageTest()
        {
            var location = new Location(40.7141289, -73.9614074);
            var request  = new TimeZoneRequest
            {
                Location = location,
                Language = Language.German
            };

            var response = GoogleMaps.TimeZone.Query(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
            Assert.AreEqual("America/New_York", response.TimeZoneId);
            Assert.AreEqual("Nordamerikanische Ostküsten-Sommerzeit", response.TimeZoneName);
            Assert.AreEqual(3600.00, response.OffSet);
            Assert.AreEqual(-18000.00, response.RawOffSet);
        }
Exemple #27
0
        public void TimeZoneTest()
        {
            var location = new Location(40.7141289, -73.9614074);
            var request  = new TimeZoneRequest
            {
                Key      = this.ApiKey,
                Location = location
            };

            var response = GoogleMaps.TimeZone.Query(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
            Assert.AreEqual("America/New_York", response.TimeZoneId);
            Assert.IsNotNull(response.TimeZoneName);
            Assert.IsNotNull(response.OffSet);
            Assert.IsNotNull(response.RawOffSet);
        }
Exemple #28
0
        public void TimeZoneWhenTimeStampTest()
        {
            var location = new Location(40.7141289, -73.9614074);
            var request  = new TimeZoneRequest
            {
                Location  = location,
                TimeStamp = DateTime.Now.AddMonths(6)
            };

            var response = GoogleMaps.TimeZone.Query(request);

            Assert.IsNotNull(response);
            Assert.AreEqual(Status.Ok, response.Status);
            Assert.AreEqual("America/New_York", response.TimeZoneId);
            Assert.AreEqual("Eastern Standard Time", response.TimeZoneName);
            Assert.AreEqual(0.00, response.OffSet);
            Assert.AreEqual(-18000.00, response.RawOffSet);
        }
Exemple #29
0
        List <TimeZoneResponseModel> ResultGenerator(List <WeatherItem> weatherItems)
        {
            var googleTimeZoneTasks = weatherItems.Select(item =>
            {
                return(Task <TimeZoneResponseModel> .Factory.StartNew(() =>
                {
                    var req = new TimeZoneRequest
                    {
                        Location = new LatLng(item.City.Coordinates.Latitude, item.City.Coordinates.Longitude)
                    };
                    var response = new TimeZoneService().GetResponse(req);
                    return TimeZoneResponseModelFactory.Create(item.City.Id, response);
                }));
            }).ToArray();

            Task.WaitAll(googleTimeZoneTasks, HttpClientTimeout);
            return(googleTimeZoneTasks.Select(task => task.Result).ToList());
        }
Exemple #30
0
        public void TimeZoneWhenAsyncAndTimeoutTest()
        {
            var location = new Location(40.7141289, -73.9614074);
            var request  = new TimeZoneRequest
            {
                Location = location
            };
            var exception = Assert.Throws <AggregateException>(() =>
            {
                var result = GoogleMaps.TimeZone.QueryAsync(request, TimeSpan.FromMilliseconds(1)).Result;
                Assert.IsNull(result);
            });

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "One or more errors occurred.");

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(innerException.GetType(), typeof(TaskCanceledException));
            Assert.AreEqual(innerException.Message, "A task was canceled.");
        }
Exemple #31
0
        public async Task <DateTimeZone> GetTimeZone(Location location, CancellationToken cancellationToken = default)
        {
            var timeZoneRequest = new TimeZoneRequest
            {
                Location  = location,
                TimeStamp = myClock.GetCurrentInstant().ToDateTimeUtc(),
                ApiKey    = myGeoCoderOptions.GoogleKey
            };
            var timeZoneResponse = await GoogleMaps.TimeZone.QueryAsync(timeZoneRequest, myTelemetryClient, cancellationToken);

            if (!timeZoneResponse.IsSuccess())
            {
                return(myClock.Zone);
            }

            if (timeZoneResponse.TimeZoneId is { } timeZoneId&&
                myDateTimeZoneProvider.GetZoneOrNull(timeZoneId) is { } dateTimeZone)
            {
                return(dateTimeZone);
            }

            return(DateTimeZone.ForOffset(Offset.FromSeconds((int)(timeZoneResponse.RawOffSet + timeZoneResponse.DstOffSet))));
        }