Example #1
0
            public void ThenShouldBeNotEqualGivenSameTickerAndDifferentContext()
            {
                //arrange
                var record1 = new TickerTrackerRecord("F", "hss");
                var record2 = new TickerTrackerRecord("F", "r-wsb");

                //act
                var @equals = record1.Equals(record2);

                //assert
                Assert.That(@equals, Is.False);
            }
Example #2
0
            public void ThenShouldBeEqualGivenSameTickerAndSameContext()
            {
                //arrange
                var record1 = new TickerTrackerRecord("TSLA", "r-wsb");
                var record2 = new TickerTrackerRecord("TSLA", "r-wsb");

                //act
                var @equals = record1.Equals(record2);

                //assert
                Assert.That(@equals, Is.True);
            }
        public List<string> GetResponse(IrcMessage ircMessage)
        {
            var ticker = ircMessage.Message.Substring(1);
            if (_tickerTransformDictionary.ContainsKey(ticker))
            {
                ticker = _tickerTransformDictionary[ticker];
            }

            var responses = new List<string>();
            if (string.IsNullOrWhiteSpace(ticker))
            {
                responses.Add("Not found");
            }
            else
            {
                var requestTime = DateTime.Now;

                var @private = ircMessage.Target == _username;
                var tickerTrackerRecord = new TickerTrackerRecord(ticker, @private ? ircMessage.Sender : _channel);
                var requestDifference = new TimeSpan();
                var repeat = false;
                if (_tickerTracker.ContainsKey(tickerTrackerRecord))
                {
                    requestDifference = requestTime.Subtract(_tickerTracker[tickerTrackerRecord]);
                    repeat = requestDifference < _norepeat;

                    if (!repeat)
                    {
                       _tickerTracker[tickerTrackerRecord] = requestTime;
                    }
                }
                else
                {
                    _tickerTracker.Add(tickerTrackerRecord, requestTime);
                }

                foreach (var pricingData in _stockTickerDataSource.GetPricingData(ticker))
                {
                    if (repeat)
                    {
                        responses.Add(string.Format(@"PRIVMSG {0} : I am configured to only post tickers every {3:mm\:ss}. Ticker was requested {1:mm\:ss} ago. Please wait {2:mm\:ss} before requesting again.", ircMessage.Sender, requestDifference, _norepeat.Subtract(requestDifference), _norepeat));
                    }
                    else
                    {
                        responses.Add(string.Format(@"PRIVMSG {0} :{1}", @private ? ircMessage.Sender : ircMessage.Target, pricingData));
                    }
                }
            }
            return responses;
        }