Esempio n. 1
0
 private async Task ReceivedRequestSystemData(ConnectorMessage.RequestSystemData message)
 {
     try
     {
         HttpWebRequest reqInfo = WebRequest.CreateHttp($"{BASE_URL}api-v1/system?systemName={message.SystemName}&showId=1&showCoordinates=1&showPermit=1&showInformation=0&showPrimaryStar=1");
         reqInfo.Timeout = 5000;
         HttpWebResponse respInfo = (await reqInfo.GetResponseAsync()) as HttpWebResponse;
         string          dataInfo = respInfo.GetContent();
         if ((String.IsNullOrWhiteSpace(dataInfo)) || (dataInfo == "[]") || (respInfo.StatusCode == HttpStatusCode.NotFound))
         {
             this.uiMessenger.Tell(new UiMessengerMessage.Publish(new NoSystemData(message.SystemName)));
             return;
         }
         Responses.SystemReq objInfo;
         try
         {
             objInfo = JsonConvert.DeserializeObject <Responses.SystemReq>(dataInfo);
         }
         catch (Exception ex)
         {
             log.Error($"Failed to deserialize EDSM systemdata for {message.SystemName} ({dataInfo.Length} chars): {ex.Message}");
             throw;
         }
         HttpWebRequest reqBodies = WebRequest.CreateHttp($"{BASE_URL}api-system-v1/bodies?systemName={message.SystemName}");
         reqBodies.Timeout = 5000;
         HttpWebResponse     respBodies = (await reqBodies.GetResponseAsync()) as HttpWebResponse;
         string              dataBodies = respBodies.GetContent();
         Responses.BodiesReq objBodies;
         try
         {
             objBodies = JsonConvert.DeserializeObject <Responses.BodiesReq>(dataBodies);
         }
         catch (Exception ex)
         {
             log.Error($"Failed to deserialize EDSM bodiesdata for {message.SystemName} ({dataBodies.Length} chars): {ex.Message}");
             throw;
         }
         List <BodyData> bodies = new List <BodyData>();
         foreach (var b in objBodies.Bodies)
         {
             bodies.Add(new BodyData(b.Id64, b.Name, b.BodyId, b.Discovery?.Commander, b.TerraformingState));
         }
         SystemData systemData = new SystemData(objInfo.Name, bodies.ToImmutableArray());
         this.uiMessenger.Tell(new UiMessengerMessage.Publish(systemData));
     }
     catch (WebException ex) when(ex.Status == WebExceptionStatus.Timeout)
     {
         log.Warning($"Timeout while getting system data for {message.SystemName}");
     }
     catch (Exception ex)
     {
         log.Error(ex, $"Failed to get EDSM data for {message.SystemName}");
     }
 }
Esempio n. 2
0
 private void ReceivedRequestSystemData(ConnectorMessage.RequestSystemData message)
 {
     this.processor.Forward(message);
 }