public override void Handle(Session Session) { string responseBodyAsString = Session.GetResponseBodyAsString(); string requestPath = ((ClientChatter)Session.oRequest).headers.RequestPath; JObject jobject = JsonConvert.DeserializeObject <JObject>(responseBodyAsString); ulong serverTime = JsonConvert.DeserializeObject <DataGachaProbabilityOverview>(responseBodyAsString).ServerTime; int num1 = requestPath.IndexOf('?'); if (num1 == -1) { Log.LogFormat("Unrecognized gacha series details request path {0}. Expected ?series_id=<n>", (object)requestPath); } else { Match match = Regex.Match(requestPath.Substring(num1 + 1), "series_id=([0-9]+)"); if (!match.Success) { Log.LogFormat("Unrecognized gacha series details request path {0}. Expected ?series_id=<n>", (object)requestPath); } else { uint series_id; if (!uint.TryParse(match.Groups[1].Value, out series_id)) { Log.LogFormat("Unrecognized gacha series details request path {0}. series_id does not appear to be an integer.", (object)requestPath); } else { DataGachaSeriesItemsForEntryPoints gacha = new DataGachaSeriesItemsForEntryPoints(); foreach (KeyValuePair <string, JToken> keyValuePair in jobject) { try { uint num2 = uint.Parse(keyValuePair.Key); if (keyValuePair.Value.Type == JTokenType.Object) { string str = JsonConvert.SerializeObject((object)keyValuePair.Value); DataGachaSeriesItemsForEntryPoints.ItemsForEntryPoint itemsForEntryPoint = new DataGachaSeriesItemsForEntryPoints.ItemsForEntryPoint(); itemsForEntryPoint.ItemDetails = JsonConvert.DeserializeObject <DataGachaSeriesItemDetails>(str); gacha.Gachas.Add(num2, itemsForEntryPoint); List <DataGachaSeriesInfo> seriesList = FFRKProxy.Instance.GameState.GachaSeries.SeriesList; if (seriesList != null) { DataGachaSeriesInfo series = seriesList.Find((Predicate <DataGachaSeriesInfo>)(x => (int)x.SeriesId == (int)series_id)); if (series != null) { itemsForEntryPoint.EntryPoint = this.FindEntryPointForSeries(series, num2); } } } } catch { } } FFRKProxy.Instance.RaiseGachaStats(gacha); FFRKProxy.Instance.RaiseGachaDetails(); } } } }
public override void Handle(Session Session) { string ResponseJson = Session.GetResponseBodyAsString(); string RequestPath = Session.oRequest.headers.RequestPath; JObject parsed_object = JsonConvert.DeserializeObject <JObject>(ResponseJson); int parameter_start_index = RequestPath.IndexOf('?'); if (parameter_start_index == -1) { Utility.Log.LogFormat("Unrecognized gacha series details request path {0}. Expected ?series_id=<n>", RequestPath); return; } string param_string = RequestPath.Substring(parameter_start_index + 1); Match series_match = Regex.Match(param_string, "series_id=([0-9]+)"); if (!series_match.Success) { Utility.Log.LogFormat("Unrecognized gacha series details request path {0}. Expected ?series_id=<n>", RequestPath); return; } uint series_id; if (!uint.TryParse(series_match.Groups[1].Value, out series_id)) { Utility.Log.LogFormat("Unrecognized gacha series details request path {0}. series_id does not appear to be an integer.", RequestPath); return; } DataGachaSeriesItemsForEntryPoints gacha = new DataGachaSeriesItemsForEntryPoints(); foreach (var child in parsed_object) { try { uint entry_point_id = uint.Parse(child.Key); if (child.Value.Type != JTokenType.Object) { continue; } string serialized = JsonConvert.SerializeObject(child.Value); var entry = new DataGachaSeriesItemsForEntryPoints.ItemsForEntryPoint(); entry.ItemDetails = JsonConvert.DeserializeObject <DataGachaSeriesItemDetails>(serialized); // Add the entry immediately. We may not end up finding DataGachaSeriesEntryPoint for this // entry point (for example if the user was already viewing the gacha banners when he loaded // FFRK Inspector. But we still save the entry point ID in the UI, and it's mostly just for // show, so the UI can fallback in that case. gacha.Gachas.Add(entry_point_id, entry); // Find the entry point details for this entry point. List <DataGachaSeriesInfo> SeriesList = FFRKProxy.Instance.GameState.GachaSeries.SeriesList; if (SeriesList == null) { continue; } DataGachaSeriesInfo series = SeriesList.Find(x => x.SeriesId == series_id); if (series == null) { continue; } entry.EntryPoint = FindEntryPointForSeries(series, entry_point_id); } catch { } } FFRKProxy.Instance.RaiseGachaStats(gacha); }