public async Task <List <TradeSingle> > GetCompletedTrades() { var deserializer = new JsonResponseDeserializer(); var info = new ResponseDeserializerInfo(); var tradeRes = await _mfl.GetRecentTrade(); var jsonString = await tradeRes.Content.ReadAsStringAsync(); try //Single { var tradeSingle = deserializer.Deserialize <TradeTransactionSingle>(jsonString, tradeRes, info) .transactions.transaction; return(new List <TradeSingle> { tradeSingle }); } catch (Exception) { Console.WriteLine("not a single trade"); } try //multi { return(deserializer.Deserialize <TradeTransactionMulti>(jsonString, tradeRes, info) .transactions.transaction); } catch (Exception) { return(null); } }
public async Task <List <TradeBait> > GetNewTradeBait() { // TODO: maybe instead of this process, just post a message saying there has been new trade bait and that you can message to see what it is var deserializer = new JsonResponseDeserializer(); var info = new ResponseDeserializerInfo(); var res = await _mfl.GetTradeBait(); var jsonString = await res.Content.ReadAsStringAsync(); try //Single { var tradeSingle = deserializer.Deserialize <TradeBaitParent>(jsonString, res, info).TradeBaits.tradeBait; return(new List <TradeBait> { tradeSingle }); } catch (Exception) { Console.WriteLine("not a single trade"); } try //multi { return(deserializer.Deserialize <TradeBaitsParent>(jsonString, res, info).tradeBaits.tradeBait); } catch (Exception) { return(null); } }
void DeserializeLaunchpadResponse_EmptyString_ReturnsNull() { var json = string.Empty; var result = new JsonResponseDeserializer().DeserializeLaunchpadResponse(json); result.Should().BeNull(); }
void DeserializeLaunchpadResponse_NullString_ReturnsNull() { string json = null; var result = new JsonResponseDeserializer().DeserializeLaunchpadResponse(json); result.Should().BeNull(); }
void DeserializeLaunchpadResponse_EmptyJson_ReturnsNull() { var json = @"{}"; var result = new JsonResponseDeserializer().DeserializeLaunchpadResponse(json); result.Should().BeNull(); }
void DeserializeLaunchpadsResponse_NullString_ReturnsEmptyList() { string json = null; var result = new JsonResponseDeserializer().DeserializeLaunchpadCollectionResponse(json); result.Should().NotBeNull(); result.Should().BeEmpty(); }
void DeserializeLaunchpadsResponse_EmptyArrayJson_ReturnsEmptyList() { var json = @"[]"; var result = new JsonResponseDeserializer().DeserializeLaunchpadCollectionResponse(json); result.Should().NotBeNull(); result.Should().BeEmpty(); }
void DeserializeLaunchpadResponse_ReturnsSuccess() { var json = @"{""id"":""dfajsd_38432"",""full_name"": ""a full name of sorts"",""status"":""active""}"; var result = new JsonResponseDeserializer().DeserializeLaunchpadResponse(json); result.Should().NotBeNull(); result.Id.Should().Be("dfajsd_38432"); result.Name.Should().Be("a full name of sorts"); result.Status.Should().Be("active"); }
void DeserializeLaunchpadsResponse_ReturnsSuccess() { var json = @"[ {""id"":""dfajsd_38432"",""full_name"": ""a full name of sorts"",""status"":""active""}, {""id"":""929232_38432"",""full_name"": ""another full name of sorts"",""status"":""retired""} ]"; var result = new JsonResponseDeserializer().DeserializeLaunchpadCollectionResponse(json); result.Should().NotBeNull(); result.ToList().Count().Should().Be(2); }
public override T Deserialize <T>(string content, HttpResponseMessage response, ResponseDeserializerInfo info) { // Consider caching generated XmlSerializers var serializer = new JsonResponseDeserializer(); if (content.Contains("Error")) { return(default(T)); } return(base.Deserialize <T>(content, response, info)); }
//TODO: Needs Testing! public async Task <List <PendingTradeDTO> > FindPendingTrades(int year) { var DTOs = new List <PendingTradeDTO>(); var responses = new List <Task <HttpResponseMessage> >(); for (int i = 2; i < 13; i++) { string franchiseNum = i.ToString("D4"); responses.Add(_api.GetPendingTrades(year, franchiseNum)); } await Task.WhenAll(responses); var deserializer = new JsonResponseDeserializer(); var info = new ResponseDeserializerInfo(); foreach (var task in responses) { var response = task.Result; var resString = string.Empty; var bodyContent = response.Content.ReadAsStreamAsync().ContinueWith(t => { var streamRes = t.Result; using (var reader = new StreamReader(streamRes)) { resString = reader.ReadToEnd(); } }); //response.StringContent; bodyContent.Wait(); if (resString.Contains("pendingTrade\":[")) { //TODO: parse response as JObject instead?? newtonsoft.json var tradesList = deserializer.Deserialize <MflPendingTradesListRoot>(resString, response, info); var multiTrades = _mapper.Map <List <MflPendingTrade>, List <PendingTradeDTO> >(tradesList.pendingTrades.PendingTrade); DTOs.AddRange(multiTrades); } else if (resString.Contains("pendingTrade\":{")) { var singleTrade = deserializer.Deserialize <MflPendingSingleTradeRoot>(resString, response, info); var singleDTO = _mapper.Map <MflPendingTrade, PendingTradeDTO>(singleTrade.pendingTrades.PendingTrade); DTOs.Add(singleDTO); } } //select only unique trade ids return(DTOs.GroupBy(t => t.tradeId).Select(t => t.First()).ToList()); }
public async Task PostTradeRumor() { var deserializer = new JsonResponseDeserializer(); var info = new ResponseDeserializerInfo(); var res = await _mfl.GetTradeBait(); var strForBot = ""; var jsonString = await res.Content.ReadAsStringAsync(); try { var tradeBait = deserializer.Deserialize <TradeBaitParent>(jsonString, res, info).tradeBaits.tradeBait; strForBot += _rumor.GetSources(); owners.TryGetValue(Int32.Parse(tradeBait.franchise_id), out var ownerName); strForBot += $"{ownerName} "; // check if this is a new post or not. var postDate = DateTimeOffset.FromUnixTimeSeconds(Convert.ToInt64(tradeBait.timestamp)); if (postDate < DateTime.Now.AddMinutes(-11)) { return; } // add verbiage strForBot += _rumor.AddBaitAction(); var hasEarlyPicks = _rumor.CheckForFirstRounders(tradeBait.willGiveUp); var multiplePlayers = _rumor.CheckForMultiplePlayers(tradeBait.willGiveUp); if (multiplePlayers) { var players = (await _mfl.GetPlayersDetails(tradeBait.willGiveUp)).players.player; strForBot += _rumor.ListPlayers(players, hasEarlyPicks); } else { var player = (await _mfl.GetPlayerDetails(tradeBait.willGiveUp)).players.player; strForBot += _rumor.ListPlayer(player, hasEarlyPicks); } await BotPost(strForBot); return; } catch (Exception e) { Console.WriteLine("not a single trade"); } try { var tradeBaits = deserializer.Deserialize <TradeBaitsParent>(jsonString, res, info).tradeBaits.tradeBait; foreach (var post in tradeBaits) { var postDate = DateTimeOffset.FromUnixTimeSeconds(Convert.ToInt64(post.timestamp)); if (postDate > DateTime.Now.AddDays(-1)) { strForBot += _rumor.GetSources(); owners.TryGetValue(Int32.Parse(post.franchise_id), out var ownerName); strForBot += $"{ownerName} "; strForBot += _rumor.AddBaitAction(); // add verbage var hasEarlyPicks = _rumor.CheckForFirstRounders(post.willGiveUp); if (_rumor.CheckForMultiplePlayers(post.willGiveUp)) { var players = (await _mfl.GetPlayersDetails(post.willGiveUp)).players.player; strForBot += _rumor.ListPlayers(players, hasEarlyPicks); } else { var player = (await _mfl.GetPlayerDetails(post.willGiveUp)).players.player; strForBot += _rumor.ListPlayer(player, hasEarlyPicks); } await BotPost(strForBot); } } } catch (Exception e) { Console.WriteLine("not a multi trade"); } }
public async Task PostCompletedTradeToGroup() { var deserializer = new JsonResponseDeserializer(); var info = new ResponseDeserializerInfo(); var tradeRes = await _mfl.GetRecentTrade(); var strForBot = ""; var jsonString = await tradeRes.Content.ReadAsStringAsync(); var owner1 = ""; var owner2 = ""; var assets1 = ""; var assets2 = ""; try { //Single var tradeSingle = deserializer.Deserialize <TradeTransactionSingle>(jsonString, tradeRes, info) .transactions.transaction; DateTime tenMinAgo = DateTime.Now.AddMinutes(-11); var tradeTime = DateTimeOffset.FromUnixTimeSeconds(Int64.Parse(tradeSingle.timestamp)); // check if trade was not in the last 10 minutes to bail early if (tradeTime < tenMinAgo) { return; } owners.TryGetValue(Int32.Parse(tradeSingle.franchise), out owner1); owners.TryGetValue(Int32.Parse(tradeSingle.franchise2), out owner2); strForBot += $"{_rumor.GetSources()}{owner1} and {owner2} have completed a trade. \n"; var multiplePlayers1 = _rumor.CheckForMultiplePlayers(tradeSingle.franchise1_gave_up); var multiplePlayers2 = _rumor.CheckForMultiplePlayers(tradeSingle.franchise2_gave_up); assets1 = multiplePlayers1 ? await _rumor.ListTradeInfoWithMultiplePlayers(tradeSingle.franchise1_gave_up) : await _rumor.ListTradeInfoWithSinglePlayer(tradeSingle.franchise1_gave_up); assets2 = multiplePlayers2 ? await _rumor.ListTradeInfoWithMultiplePlayers(tradeSingle.franchise2_gave_up) : await _rumor.ListTradeInfoWithSinglePlayer(tradeSingle.franchise2_gave_up); strForBot += $"{owner1} sends: \n{assets1} \n{owner2} sends: \n{assets2}"; await BotPost(strForBot); return; } catch (Exception e) { Console.WriteLine("not a single trade"); } try { //Multiple var multiTrade = deserializer.Deserialize <TradeTransactionMulti>(jsonString, tradeRes, info) .transactions.transaction; var tenMinAgo = DateTime.Now.AddMinutes(-11); foreach (var trade in multiTrade) { var tradeTime = DateTimeOffset.FromUnixTimeSeconds(Int64.Parse(trade.timestamp)); // check if trade was not in the last 10 minutes to bail early if (tradeTime >= tenMinAgo) { owners.TryGetValue(Int32.Parse(trade.franchise), out owner1); owners.TryGetValue(Int32.Parse(trade.franchise2), out owner2); strForBot += $"{_rumor.GetSources()}{owner1} and {owner2} have completed a trade. \n"; var multiplePlayers1 = _rumor.CheckForMultiplePlayers(trade.franchise1_gave_up); var multiplePlayers2 = _rumor.CheckForMultiplePlayers(trade.franchise2_gave_up); assets1 = multiplePlayers1 ? await _rumor.ListTradeInfoWithMultiplePlayers(trade.franchise1_gave_up) : await _rumor.ListTradeInfoWithSinglePlayer(trade.franchise1_gave_up); assets2 = multiplePlayers2 ? await _rumor.ListTradeInfoWithMultiplePlayers(trade.franchise2_gave_up) : await _rumor.ListTradeInfoWithSinglePlayer(trade.franchise2_gave_up); strForBot += $"{owner1} sends: \n{assets1} \n{owner2} sends: \n{assets2}"; await BotPost(strForBot); } } } catch (Exception e) { Console.WriteLine("not a multi trade"); } }