예제 #1
0
        public async Task <StateVectorResponse> GetOwnStateVectorsAsync(int?time = null, string icao24 = null, int[] serials = null, Credentials credentials = null, BoundingBox boundingBox = null, CancellationToken cancellationToken = default)
        {
            var url = $"{apiUrl}/states/own";

            var httpRequestMessageBuilder = new HttpRequestMessageBuilder(url, HttpMethod.Get);

            if (time.HasValue)
            {
                httpRequestMessageBuilder.AddQueryString("time", time.Value.ToString(CultureInfo.InvariantCulture));
            }

            if (icao24 != null)
            {
                httpRequestMessageBuilder.AddQueryString("icao24", icao24);
            }

            if (serials != null)
            {
                foreach (var serial in serials)
                {
                    httpRequestMessageBuilder.AddQueryString("serials", serial.ToString(CultureInfo.InvariantCulture));
                }
            }

            if (boundingBox != null)
            {
                httpRequestMessageBuilder.AddQueryString("lamin", boundingBox.LaMin.ToString(CultureInfo.InvariantCulture));
                httpRequestMessageBuilder.AddQueryString("lomin", boundingBox.LoMin.ToString(CultureInfo.InvariantCulture));
                httpRequestMessageBuilder.AddQueryString("lamax", boundingBox.LaMax.ToString(CultureInfo.InvariantCulture));
                httpRequestMessageBuilder.AddQueryString("lomax", boundingBox.LoMax.ToString(CultureInfo.InvariantCulture));
            }

            var httpRequestMessage = httpRequestMessageBuilder.Build();

            if (credentials != null)
            {
                SetBasicAuthHeader(httpRequestMessage, credentials);
            }

            using (var httpResponse = await httpClient
                                      .SendAsync(httpRequestMessage, HttpCompletionOption.ResponseHeadersRead, cancellationToken)
                                      .ConfigureAwait(false))
            {
                httpResponse.EnsureSuccessStatusCode();

                using (var stream = await httpResponse.Content
                                    .ReadAsStreamAsync(cancellationToken)
                                    .ConfigureAwait(false))
                {
                    return(await StateVectorResponseParser.ParseAsync(stream));
                }
            }
        }
        public async Task ParseStateVectorResponseTest()
        {
            var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "all_state_vectors_response.json");

            using (var stream = File.OpenRead(filePath))
            {
                var result = await StateVectorResponseParser.ParseAsync(stream);

                Assert.IsNotNull(result);

                Assert.AreEqual(1600950860, result.Time);

                Assert.IsNotNull(result.States);
                Assert.AreEqual(1750, result.States.Length);
            }
        }