public async Task <List <Drone.Model.DroneOutputModel> > GetDroneCoordinatesFromApi(string droneInputModel)
        {
            //string uri = settingsService.GetWebApiPath();
            //string uri = Common.ServicesManager.GetClientUri(DroneService);
            string[] stringSeparators          = new string[] { "\r\n" };
            var      commands                  = droneInputModel.TrimEnd().Split(stringSeparators, StringSplitOptions.None);
            List <DroneInputModel> inputModels = new List <DroneInputModel>();
            var gridDimensions                 = commands[0].Split(' '); // First line sets the Battlefield dimensoins

            DroneControlModel droneControlModel = new DroneControlModel();

            droneControlModel.GridTopX = int.Parse(gridDimensions[0]);
            droneControlModel.GridTopY = int.Parse(gridDimensions[1]);

            for (int i = 1; i < commands.Length; i += 2)
            {
                DroneInputModel model   = new DroneInputModel();
                var             postion = commands[i].Split(' ');
                model.Position.PositionX = int.Parse(postion[0]);
                model.Position.PositionY = int.Parse(postion[1]);
                model.Position.Heading   = postion[2];
                model.Instructions       = commands[i + 1];

                droneControlModel.DroneInputs.Add(model);
            }
            string inputJson = JsonConvert.SerializeObject(droneControlModel);

            //var droneControlModel = JsonConvert.DeserializeObject<Drone.Model.DroneOutputModel>(droneControlJsonModel);
            string uri = "http://localhost/Drone.NavigationApi/api/DroneNavigation";
            List <DroneOutputModel> FinalDroneCoordinates = new List <DroneOutputModel>();

            try
            {
                using (HttpClient httpClient = new HttpClient())
                {
                    // FinalDroneCoordinates = JsonConvert.DeserializeObject<List<Drone.Model.DroneOutputModel>>(
                    //    await httpClient.GetStringAsync(uri)
                    //);
                    //var results = await httpClient.GetStringAsync(uri);
                    //httpClient.GetAsync()

                    StringContent content  = new StringContent(JsonConvert.SerializeObject(droneControlModel), Encoding.UTF8, "application/json");
                    var           response = await httpClient.PostAsync(uri, content);

                    FinalDroneCoordinates = await response.Content.ReadAsAsync <List <Drone.Model.DroneOutputModel> >();

                    //FinalDroneCoordinates = JsonConvert.DeserializeObject<List<Drone.Model.DroneOutputModel>>(
                    //   await httpClient.PostAsJsonAsync(uri, droneControlModel).Result;
                    //);
                    return(FinalDroneCoordinates);
                }
            }
            catch (Exception ex)
            {
                //Log Exception
                Console.WriteLine(ex.Message);
                throw new Exception("Error occured while accessing the service API");
            }
            return(FinalDroneCoordinates);
        }
        /// <summary>
        /// Access the service endpoints and retrieves the list of pets based on the type passed as the parameter.
        /// </summary>
        /// <param name="petType">Pet Type Enum Refer Common.PetTypes.Type</param>
        /// <returns>List of pets grouped based on the owners gender</returns>
        public async Task <List <Drone.Model.DroneOutputModel> > GetDroneCoordinates(DroneControlModel droneControlModel)
        {
            //string uri = Common.ServicesManager.GetClientUri(DroneService);
            string uri = "http://localhost/Drone.NavigationApi/api/DroneNavigation";
            List <DroneOutputModel> FinalDroneCoordinates = new List <DroneOutputModel>();

            try
            {
                using (HttpClient httpClient = new HttpClient())
                {
                    // FinalDroneCoordinates = JsonConvert.DeserializeObject<List<Drone.Model.DroneOutputModel>>(
                    //    await httpClient.GetStringAsync(uri)
                    //);
                    //var results = await httpClient.GetStringAsync(uri);
                    //httpClient.GetAsync()
                    var response = await httpClient.PostAsJsonAsync(uri, droneControlModel);

                    FinalDroneCoordinates = await response.Content.ReadAsAsync <List <Drone.Model.DroneOutputModel> >();

                    //FinalDroneCoordinates = JsonConvert.DeserializeObject<List<Drone.Model.DroneOutputModel>>(
                    //   await httpClient.PostAsJsonAsync(uri, droneControlModel).Result;
                    //);
                    return(FinalDroneCoordinates);
                }
            }
            catch (Exception ex)
            {
                //Log Exception
                Console.WriteLine(ex.Message);
                throw new Exception("Error occured while accessing the service API");
            }
            return(FinalDroneCoordinates);
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="droneControlModel"></param>
        /// <returns></returns>
        public List <DroneOutputModel> ExecuteDroneNavigation(DroneControlModel droneControlModel)
        {
            GridTopX = droneControlModel.GridTopX;
            GridTopY = droneControlModel.GridTopY;

            List <DroneOutputModel> FinalDroneCoordinates = new List <DroneOutputModel>();

            foreach (DroneInputModel input in droneControlModel.DroneInputs)
            {
                FinalDroneCoordinates.Add(ExecuteCommand(input));
            }
            return(FinalDroneCoordinates);
        }
Beispiel #4
0
 public List <Drone.Model.DroneOutputModel> GetDroneCoordinates([FromBody] DroneControlModel droneControlModel)
 {
     return(ExecuteDroneNavigation(droneControlModel));
 }