コード例 #1
0
        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); }
        }
コード例 #2
0
        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); }
        }
コード例 #3
0
        void DeserializeLaunchpadResponse_EmptyString_ReturnsNull()
        {
            var json   = string.Empty;
            var result = new JsonResponseDeserializer().DeserializeLaunchpadResponse(json);

            result.Should().BeNull();
        }
コード例 #4
0
        void DeserializeLaunchpadResponse_NullString_ReturnsNull()
        {
            string json   = null;
            var    result = new JsonResponseDeserializer().DeserializeLaunchpadResponse(json);

            result.Should().BeNull();
        }
コード例 #5
0
        void DeserializeLaunchpadResponse_EmptyJson_ReturnsNull()
        {
            var json   = @"{}";
            var result = new JsonResponseDeserializer().DeserializeLaunchpadResponse(json);

            result.Should().BeNull();
        }
コード例 #6
0
        void DeserializeLaunchpadsResponse_NullString_ReturnsEmptyList()
        {
            string json   = null;
            var    result = new JsonResponseDeserializer().DeserializeLaunchpadCollectionResponse(json);

            result.Should().NotBeNull();
            result.Should().BeEmpty();
        }
コード例 #7
0
        void DeserializeLaunchpadsResponse_EmptyArrayJson_ReturnsEmptyList()
        {
            var json   = @"[]";
            var result = new JsonResponseDeserializer().DeserializeLaunchpadCollectionResponse(json);

            result.Should().NotBeNull();
            result.Should().BeEmpty();
        }
コード例 #8
0
        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");
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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));
        }
コード例 #11
0
        //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());
        }
コード例 #12
0
        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"); }
        }
コード例 #13
0
        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"); }
        }