/*
         * handle the external servers.
         */
        private async Task <ActionResult <List <Flight> > > HandleExternalServers(string relativTo,
                                                                                  Dictionary <string, string> flightToServer, List <Flight> flights)
        {
            string        resp;
            List <Flight> serverFlights;

            foreach (Server server in await _serverDb.LoadAllServers())
            {
                HttpResponseMessage response;
                try
                {
                    response = await _client.GetAsync(server.Url
                                                      + "/api/Flights?relative_to=" + relativTo);
                }
                catch (Exception)
                {
                    return(StatusCode(500, "cant get respone from other server"));
                }
                if (response.IsSuccessStatusCode)
                {
                    resp = await response.Content.ReadAsStringAsync();

                    serverFlights = JsonConvert.DeserializeObject <List <Flight> >(resp);
                }
                else
                {
                    return(StatusCode(500, "problem in the response of other server"));
                }
                if (!HandleOutFlights(serverFlights, server.Id, flightToServer))
                {
                    return(StatusCode(500, "get invalid flight from other server"));
                }
                flights.AddRange(serverFlights);
            }
            await AddFlightsToServers(flightToServer);

            return(flights);
        }
示例#2
0
 /*
  * return all the servers that connected to the server.
  */
 public async Task <List <Server> > GetServers()
 {
     return(await _serverDb.LoadAllServers());
 }