/// <summary> /// Reperisce il piano di volo dai server di IVAO /// </summary> /// <returns>true se il reperimento riesce</returns> public bool FetchFlightPlan() { status.Callsign = IPSConfiguration.CALLSIGN; status.VirtualAirlineID = IPSConfiguration.VA_ID; IvaoFlightPlan fp = null; //try/catch inserito per issue 62 try { fp = IPSUtils.RetrivePlan(status.Callsign); } catch (Exception ex) { Log("Impossibile reperire il piano di volo: " + ex.Message); Log(ex.StackTrace); } if (fp != null) { status.FlightPlan = fp; return(true); } else { return(false); } }
/// <summary> /// Reperisce il piano di volo dai server di IVAO /// </summary> /// <param name="ivaoCallsign">il callsign del pilota di cui scaricare il piano di volo</param> /// <returns>il piano di volo richiesto se presente, null altrimenti</returns> public static IvaoFlightPlan RetrivePlan(String ivaoCallsign) { //Istanzio le variabili che servono per la chiamata http WebClient client = new WebClient(); Stream data = client.OpenRead(IPSConfiguration.IVAO_FP_URL); StreamReader reader = new StreamReader(data); string str = ""; string rightLine = null; //sequenza di lettura: riga per riga si va alla ricerca di quella che inizia col callsign desiderato str = reader.ReadLine(); while (str != null) { string[] tmp = str.Split(':'); if (tmp[0].Equals(ivaoCallsign)) { rightLine = str; } str = reader.ReadLine(); } if (rightLine != null) { //trovata la linea vado a cercare le colonne che mi interessano string[] tmp = rightLine.Split(':'); IvaoFlightPlan toBeRet = new IvaoFlightPlan(); toBeRet.Route = tmp[30]; toBeRet.Departure = new Airport(); toBeRet.Departure.ICAOCode = tmp[11]; toBeRet.Arrival = new Airport(); toBeRet.Arrival.ICAOCode = tmp[13]; toBeRet.Alternate = new Airport(); toBeRet.Alternate.ICAOCode = tmp[28]; toBeRet.FlightType = tmp[21]; toBeRet.Aircraft = tmp[9].Split('/')[1]; return(toBeRet); } else { return(null); } }