Пример #1
0
        public async Task <RoadStatusResponse> RoadStatus(RoadStatusRequest roadStatusRequest)
        {
            var endPointUrl = $"{roadStatusRequest.BaseUrl}Road/{roadStatusRequest.Id}";

            using HttpClient client = new HttpClient();
            var builder = new UriBuilder(endPointUrl);
            var query   = HttpUtility.ParseQueryString(builder.Query);

            query["app_id"]  = roadStatusRequest.AppId;
            query["app_key"] = roadStatusRequest.AppKey;
            builder.Query    = query.ToString();
            var requestUrl = builder.ToString();

            client.BaseAddress = new Uri(requestUrl);
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = client.GetAsync(requestUrl).Result;


            if (!response.IsSuccessStatusCode)
            {
                return(null);
            }

            var result = await response.Content.ReadAsStringAsync();

            var roadStatusResponse = JsonConvert.DeserializeObject <List <RoadStatusResponse> >(result);

            return(roadStatusResponse.FirstOrDefault());
        }
        public async Task <RoadStatusResponseDto> RoadStatusService(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                throw new Exception("No road Id was entered");
            }

            var appId   = _configuration.GetSection("TFL:AppId").Value;
            var appKey  = _configuration.GetSection("TFL:AppKey").Value;
            var baseUrl = _configuration.GetSection("TFL:DataEndPoint").Value;

            var roadStatusRequest = new RoadStatusRequest
            {
                Id      = id,
                AppId   = appId,
                AppKey  = appKey,
                BaseUrl = baseUrl
            };

            try
            {
                var tflRequest = await _roadApi.RoadStatus(roadStatusRequest);

                var result = _autoMapper.Map <RoadStatusResponseDto>(tflRequest);

                return(result);
            }
            catch
            {
                return(null);
            }
        }
Пример #3
0
        public void GivenAValidRoadIdReturnTrue()
        {
            var apiResponse = new RoadStatusResponse
            {
                Type                      = "Tfl.Api.Presentation.Entities.RoadCorridor, Tfl.Api.Presentation.Entities",
                Id                        = "A2",
                DisplayName               = "A2",
                StatusSeverity            = "Good",
                StatusSeverityDescription = "No Exceptional Delays",
                Bounds                    = "[[-0.0857,51.44091],[0.17118,51.49438]]",
                Envelope                  = "[[-0.0857,51.44091],[-0.0857,51.49438],[0.17118,51.49438],[0.17118,51.44091],[-0.0857,51.44091]]",
                Url                       = "/Road/a2"
            };
            var apiRequest = new RoadStatusRequest
            {
                AppId   = "AppId",
                AppKey  = "AppKey",
                BaseUrl = "DataEndPoint",
                Id      = "A2"
            };


            var roadApi = new Mock <IRoadApi>();

            var configuration = new Mock <IConfiguration>();

            var mockConfAppId = new Mock <IConfigurationSection>();

            var mockConfAppKey = new Mock <IConfigurationSection>();

            var mockConfBaseUrl = new Mock <IConfigurationSection>();

            mockConfAppId.Setup(a => a.Value).Returns("AppId");
            mockConfAppKey.Setup(a => a.Value).Returns("AppKey");
            mockConfBaseUrl.Setup(a => a.Value).Returns("DataEndPoint");

            configuration.Setup(a => a.GetSection("TFL:AppId")).Returns(mockConfAppId.Object);
            configuration.Setup(a => a.GetSection("TFL:AppKey")).Returns(mockConfAppKey.Object);
            configuration.Setup(a => a.GetSection("TFL:DataEndPoint")).Returns(mockConfBaseUrl.Object);


            roadApi.Setup(x => x.RoadStatus(It.IsAny <RoadStatusRequest>())).ReturnsAsync(apiResponse);

            var sut = new RoadService(roadApi.Object, configuration.Object, CurrentMapper);

            var result = sut.RoadStatusService(apiRequest.Id).Result;

            Assert.Equal(apiResponse.DisplayName, result.DisplayName);
            Assert.Equal(apiResponse.StatusSeverity, result.StatusSeverity);
            Assert.Equal(apiResponse.StatusSeverityDescription, result.StatusSeverityDescription);
        }
        public async Task <List <RoadResponseObject> > CheckRoadStatusAsync(Authentication auth, RoadStatusRequest roadrequest)
        {
            List <RoadResponseObject> responseObject = new List <RoadResponseObject>();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(roadrequest.baseUrl);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Add(auth.id, auth.key);
                client.DefaultRequestHeaders.Add(auth.app_id, auth.app_key);

                HttpResponseMessage response = await client.GetAsync(String.Format(root, roadrequest.roadId));

                if (!response.IsSuccessStatusCode)
                {
                    return(responseObject);
                }

                var responseString = await response.Content.ReadAsStringAsync();

                responseObject = await Task.Run(() => Newtonsoft.Json.JsonConvert.DeserializeObject <List <RoadResponseObject> >(responseString));

                return(responseObject);
            }
        }