public static List <MicroResourceAmount> ReadMicroResources(string key, IDictionary <string, object> data, string categoryEdName = null) { var result = new List <MicroResourceAmount>(); if (data.TryGetValue(key, out object val)) { if (val is List <object> listVal) { foreach (IDictionary <string, object> microResourceVal in listVal) { var edname = JsonParsing.getString(microResourceVal, "Name"); var fallbackName = JsonParsing.getString(microResourceVal, "Name_Localised"); categoryEdName = JsonParsing.getString(microResourceVal, "Type") ?? categoryEdName ?? MicroResourceCategory.Unknown.edname; var resource = MicroResource.FromEDName(edname, fallbackName, categoryEdName); var ownerId = JsonParsing.getOptionalInt(microResourceVal, "OwnerID"); var missionId = JsonParsing.getOptionalDecimal(microResourceVal, "MissionID"); var amount = JsonParsing.getInt(microResourceVal, "Count"); result.Add(new MicroResourceAmount(resource, ownerId, missionId, amount)); } } } return(result); }
private static Faction ParseStarMapFaction(JObject faction) { Faction Faction = new Faction { name = (string)faction["name"], EDSMID = (long?)faction["id"], Allegiance = Superpower.FromName((string)faction["allegiance"]) ?? Superpower.None, Government = Government.FromName((string)faction["government"]) ?? Government.None, isplayer = (bool)faction["isPlayer"], influence = (decimal?)faction["influence"] * 100, // Convert from a 0-1 range to a percentage FactionState = FactionState.FromName((string)faction["state"]) ?? FactionState.None, updatedAt = (DateTime)Dates.fromTimestamp((long?)faction["lastUpdate"]) }; IDictionary <string, object> factionDetail = faction.ToObject <IDictionary <string, object> >(); // Active states Faction.ActiveStates = new List <FactionState>(); factionDetail.TryGetValue("ActiveStates", out object activeStatesVal); if (activeStatesVal != null) { var activeStatesList = (List <object>)activeStatesVal; foreach (IDictionary <string, object> activeState in activeStatesList) { Faction.ActiveStates.Add(FactionState.FromEDName(JsonParsing.getString(activeState, "State") ?? "None")); } } // Pending states Faction.PendingStates = new List <FactionTrendingState>(); factionDetail.TryGetValue("PendingStates", out object pendingStatesVal); if (pendingStatesVal != null) { var pendingStatesList = (List <object>)pendingStatesVal; foreach (IDictionary <string, object> pendingState in pendingStatesList) { FactionTrendingState pTrendingState = new FactionTrendingState( FactionState.FromEDName(JsonParsing.getString(pendingState, "State") ?? "None"), JsonParsing.getInt(pendingState, "Trend") ); Faction.PendingStates.Add(pTrendingState); } } // Recovering states Faction.RecoveringStates = new List <FactionTrendingState>(); factionDetail.TryGetValue("RecoveringStates", out object recoveringStatesVal); if (recoveringStatesVal != null) { var recoveringStatesList = (List <object>)recoveringStatesVal; foreach (IDictionary <string, object> recoveringState in recoveringStatesList) { FactionTrendingState rTrendingState = new FactionTrendingState( FactionState.FromEDName(JsonParsing.getString(recoveringState, "State") ?? "None"), JsonParsing.getInt(recoveringState, "Trend") ); Faction.RecoveringStates.Add(rTrendingState); } } return(Faction); }
public Faction ParseFaction(object response) { try { IDictionary <string, object> factionJson = Deserializtion.DeserializeData(response.ToString()); Faction faction = new Faction { EDDBID = (long)factionJson["eddb_id"], name = (string)factionJson["name"], updatedAt = (DateTime)factionJson["updated_at"], Government = Government.FromName((string)factionJson["government"]), Allegiance = Superpower.FromName((string)factionJson["allegiance"]), }; foreach (object presence in (List <object>)factionJson["faction_presence"]) { IDictionary <string, object> presenceJson = (IDictionary <string, object>)presence; FactionPresence factionPresence = new FactionPresence() { systemName = JsonParsing.getString(presenceJson, "system_name"), influence = (JsonParsing.getOptionalDecimal(presenceJson, "influence") ?? 0) * 100, // Convert from a 0-1 range to a percentage FactionState = FactionState.FromEDName(JsonParsing.getString(presenceJson, "state")) ?? FactionState.None, }; // These properties may not be present in the json, so we pass them after initializing our FactionPresence object. factionPresence.Happiness = Happiness.FromEDName(JsonParsing.getString(presenceJson, "happiness")) ?? Happiness.None; presenceJson.TryGetValue("updated_at", out object updatedVal); factionPresence.updatedAt = (DateTime?)updatedVal ?? DateTime.MinValue; // Active states presenceJson.TryGetValue("active_states", out object activeStatesVal); if (activeStatesVal != null) { var activeStatesList = (List <object>)activeStatesVal; foreach (IDictionary <string, object> activeState in activeStatesList) { factionPresence.ActiveStates.Add(FactionState.FromEDName(JsonParsing.getString(activeState, "state")) ?? FactionState.None); } } // Pending states presenceJson.TryGetValue("pending_states", out object pendingStatesVal); if (pendingStatesVal != null) { var pendingStatesList = (List <object>)pendingStatesVal; foreach (IDictionary <string, object> pendingState in pendingStatesList) { FactionTrendingState pTrendingState = new FactionTrendingState( FactionState.FromEDName(JsonParsing.getString(pendingState, "state")) ?? FactionState.None, JsonParsing.getInt(pendingState, "trend") ); factionPresence.PendingStates.Add(pTrendingState); } } // Recovering states presenceJson.TryGetValue("recovering_states", out object recoveringStatesVal); if (recoveringStatesVal != null) { var recoveringStatesList = (List <object>)recoveringStatesVal; foreach (IDictionary <string, object> recoveringState in recoveringStatesList) { FactionTrendingState rTrendingState = new FactionTrendingState( FactionState.FromEDName(JsonParsing.getString(recoveringState, "state")) ?? FactionState.None, JsonParsing.getInt(recoveringState, "trend") ); factionPresence.RecoveringStates.Add(rTrendingState); } } faction.presences.Add(factionPresence); } return(faction); } catch (Exception ex) { Dictionary <string, object> data = new Dictionary <string, object>() { { "input", response }, { "exception", ex } }; Logging.Error("Failed to parse BGS faction data.", data); return(null); } }
private static Faction ParseFaction(object response) { IDictionary <string, object> factionJson = Deserializtion.DeserializeData(response.ToString()); Faction faction = new Faction { EDDBID = (long)factionJson["eddb_id"], name = (string)factionJson["name"], updatedAt = (DateTime)factionJson["updated_at"], Government = Government.FromName((string)factionJson["government"]), Allegiance = Superpower.FromName((string)factionJson["allegiance"]), }; foreach (object presence in (List <object>)factionJson["faction_presence"]) { IDictionary <string, object> presenceJson = (IDictionary <string, object>)presence; FactionPresence factionPresence = new FactionPresence() { systemName = (string)presenceJson["system_name"], influence = (decimal?)(double?)presenceJson["influence"] * 100, // Convert from a 0-1 range to a percentage FactionState = FactionState.FromEDName((string)presenceJson["state"]) ?? FactionState.None, Happiness = Happiness.FromEDName((string)presenceJson["happiness"]) ?? Happiness.None, updatedAt = (DateTime)presenceJson["updated_at"], }; // Active states presenceJson.TryGetValue("active_states", out object activeStatesVal); if (activeStatesVal != null) { var activeStatesList = (List <object>)activeStatesVal; foreach (IDictionary <string, object> activeState in activeStatesList) { factionPresence.ActiveStates.Add(FactionState.FromEDName(JsonParsing.getString(activeState, "state") ?? "None")); } } // Pending states presenceJson.TryGetValue("pending_states", out object pendingStatesVal); if (pendingStatesVal != null) { var pendingStatesList = (List <object>)pendingStatesVal; foreach (IDictionary <string, object> pendingState in pendingStatesList) { FactionTrendingState pTrendingState = new FactionTrendingState( FactionState.FromEDName(JsonParsing.getString(pendingState, "state") ?? "None"), JsonParsing.getInt(pendingState, "trend") ); factionPresence.PendingStates.Add(pTrendingState); } } // Recovering states presenceJson.TryGetValue("recovering_states", out object recoveringStatesVal); if (recoveringStatesVal != null) { var recoveringStatesList = (List <object>)recoveringStatesVal; foreach (IDictionary <string, object> recoveringState in recoveringStatesList) { FactionTrendingState rTrendingState = new FactionTrendingState( FactionState.FromEDName(JsonParsing.getString(recoveringState, "state") ?? "None"), JsonParsing.getInt(recoveringState, "trend") ); factionPresence.RecoveringStates.Add(rTrendingState); } } faction.presences.Add(factionPresence); } return(faction); }
private Faction ParseStarMapFaction(JObject faction, string systemName) { try { if (faction is null) { return(null); } Faction Faction = new Faction { name = (string)faction["name"], EDSMID = (long?)faction["id"], Allegiance = Superpower.FromName((string)faction["allegiance"]) ?? Superpower.None, Government = Government.FromName((string)faction["government"]) ?? Government.None, isplayer = (bool?)faction["isPlayer"], updatedAt = Dates.fromTimestamp((long?)faction["lastUpdate"]) ?? DateTime.MinValue }; Faction.presences.Add(new FactionPresence() { systemName = systemName, influence = (decimal?)faction["influence"] * 100, // Convert from a 0-1 range to a percentage FactionState = FactionState.FromName((string)faction["state"]) ?? FactionState.None, }); IDictionary <string, object> factionDetail = faction.ToObject <IDictionary <string, object> >(); // Active states factionDetail.TryGetValue("activeStates", out object activeStatesVal); if (activeStatesVal != null) { var activeStatesList = (JArray)activeStatesVal; foreach (var activeStateToken in activeStatesList) { var activeState = activeStateToken.ToObject <IDictionary <string, object> >(); Faction.presences.FirstOrDefault(p => p.systemName == systemName)? .ActiveStates.Add(FactionState.FromName(JsonParsing.getString(activeState, "state")) ?? FactionState.None); } } // Pending states factionDetail.TryGetValue("pendingStates", out object pendingStatesVal); if (pendingStatesVal != null) { var pendingStatesList = ((JArray)pendingStatesVal).ToList(); foreach (var pendingStateToken in pendingStatesList) { var pendingState = pendingStateToken.ToObject <IDictionary <string, object> >(); FactionTrendingState pTrendingState = new FactionTrendingState( FactionState.FromName(JsonParsing.getString(pendingState, "state")) ?? FactionState.None, JsonParsing.getInt(pendingState, "trend") ); Faction.presences.FirstOrDefault(p => p.systemName == systemName)? .PendingStates.Add(pTrendingState); } } // Recovering states factionDetail.TryGetValue("recoveringStates", out object recoveringStatesVal); if (recoveringStatesVal != null) { var recoveringStatesList = (JArray)recoveringStatesVal; foreach (var recoveringStateToken in recoveringStatesList) { var recoveringState = recoveringStateToken.ToObject <IDictionary <string, object> >(); FactionTrendingState rTrendingState = new FactionTrendingState( FactionState.FromName(JsonParsing.getString(recoveringState, "state")) ?? FactionState.None, JsonParsing.getInt(recoveringState, "trend") ); Faction.presences.FirstOrDefault(p => p.systemName == systemName)? .RecoveringStates.Add(rTrendingState); } } return(Faction); } catch (Exception ex) { Dictionary <string, object> data = new Dictionary <string, object> { { "faction", JsonConvert.SerializeObject(faction) }, { "exception", ex.Message }, { "stacktrace", ex.StackTrace } }; Logging.Error("Error parsing EDSM faction result.", data); } return(null); }