public static string Stringify(this WowPvpBracket wowPvpBracket) { switch (wowPvpBracket) { case WowPvpBracket.TwoVs2: return("2v2"); case WowPvpBracket.ThreeVs3: return("3v3"); case WowPvpBracket.Rbg: return("rbg"); default: return("2v2"); } }
public static string ParseBracketName(this WowPvpBracket wowPvpBracket, string bracketName) { if (bracketName == WowPvpBracket.TwoVs2.ToString()) { return("2v2"); } if (bracketName == WowPvpBracket.ThreeVs3.ToString()) { return("3v3"); } if (bracketName == WowPvpBracket.Rbg.ToString()) { return("rbg"); } return("2v2"); }
/// <summary> /// Return pvp world of warcraft ladder data from official blizzard web api /// </summary> /// <param name="locale">BlizzardLocale.All is invalid param for this method</param> /// <param name="bracket">WowPvpBracket.All is invalid param for this method</param> /// <returns></returns> public async Task <IReadOnlyList <PvpApiRowModel> > GetPvpLadderRowsAsync(BlizzardLocale locale, WowPvpBracket bracket) { if (locale == BlizzardLocale.All) { throw new InvalidEnumArgumentException(nameof(BlizzardLocale.All)); } if (bracket == WowPvpBracket.All) { throw new InvalidEnumArgumentException(nameof(WowPvpBracket.All)); } var url = $"{BaseUrl}/{bracket.Stringify()}?locale={locale}&apikey={ApiKey}"; try { using (var content = await HttpClient.GetStreamAsync(url)) using (var streamReader = new StreamReader(content)) using (var jsonTextReader = new JsonTextReader(streamReader)) { var serializer = new JsonSerializer(); var rows = serializer.Deserialize <PvpApiRowsModel>(jsonTextReader); foreach (var row in rows.Rows) { row.Locale = (byte)locale; row.DownloadedOn = DateTime.Now; row.Bracket = (byte)bracket; } return(rows.Rows); } } catch (Exception ex) { LogerManager.LogError(ex, $"url: {url}"); return(null); } }
public void RemoveRecords(BlizzardLocale locale, WowPvpBracket wowPvpBracket) { _liteDbRepo.Delete <PvpApiRowModel>(row => row.Locale == (byte)locale && row.Bracket == (byte)wowPvpBracket); }
public IReadOnlyList <PvpApiRowModel> Get(BlizzardLocale locale = BlizzardLocale.All, WowPvpBracket bracket = WowPvpBracket.All, WowClass wowClass = WowClass.All, WowSpec spec = WowSpec.All, uint skip = 0, uint take = 100) { var query = _liteDbRepo.Query <PvpApiRowModel>(); if (locale != BlizzardLocale.All) { query = query.Where(row => row.Locale == (byte)locale); } if (bracket != WowPvpBracket.All) { query = query.Where(row => row.Bracket == (byte)bracket); } if (wowClass != WowClass.All) { query = query.Where(row => row.ClassId == (byte)wowClass); } if (spec != WowSpec.All) { query = query.Where(row => row.SpecId == (ushort)spec); } query = query.Where(Query.All("Rating")) .Where(Query.All("Name")) .Skip((int)skip) .Limit((int)take); IReadOnlyList <PvpApiRowModel> result = query.ToList(); return(result); }
public Task <IReadOnlyList <PvpApiRowModel> > GetAsync(BlizzardLocale locale = BlizzardLocale.All, WowPvpBracket bracket = WowPvpBracket.All, WowClass wowClass = WowClass.All, WowSpec spec = WowSpec.All, uint skip = 0, uint take = 100) { return(Task.Run(() => Get(locale, bracket, wowClass, spec, skip, take))); }