using System; using System.Collections.Generic; using System.Net.Http; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.Threading.Tasks; namespace WarframeClock { [DataContract] public class WorldState { [DataMember(Name = "SyndicateMissions")] public List SyndicateMissions; [DataContract] public class WorldStateSyndicateMission { [DataMember(Name = "Tag")] public string Tag { get; set; } [DataMember(Name = "Expiry")] public WorldStateDate Expiry { get; set; } } [DataContract] public class WorldStateDate { [DataMember(Name = "$date")] public WorldStateNumberLong Date { get; set; } } [DataContract] public class WorldStateNumberLong { [DataMember(Name = "$numberLong")] public long NumberLong { get; set; } } public static async Task Fetch() { using (var httpClient = new HttpClient()) { var res = await httpClient.GetAsync("http://content.warframe.com/dynamic/worldState.php"); if (!res.IsSuccessStatusCode) { throw new Exception("WorldState: Could not fetch worldState.php"); } var body = await res.Content.ReadAsStreamAsync(); var serializer = new DataContractJsonSerializer(typeof(WorldState)); return (WorldState)serializer.ReadObject(body); } } } }