private async Task <uint> LoadMoreItemsInternalAsync(uint count, CancellationToken cancellationToken) { var REDDIT_API_BASE = "http://www.bbc.co.uk/search/more?page={0}&q={1}"; var REDDIT_API_BASE_REQUEST = string.Format(REDDIT_API_BASE, "1", Uri.EscapeDataString(this._query)); var requestUrl = REDDIT_API_BASE_REQUEST; int page = 1; while (!this._cancellationToken.IsCancellationRequested && requestUrl != null) { string response = await Downloader.DownloadTextAsync(requestUrl); if (response == null) { // Brute Force Algorithm continue; } IEnumerable <BaseSearchResult> results = BBCParser.ParseSearchResults(response, _query); await System.Windows.Application.Current.Dispatcher.BeginInvoke( System.Windows.Threading.DispatcherPriority.Normal, new Action(() => { foreach (var result in results) { if (_itemsAvailable > _itemsRequired) { break; } if (!this._cancellationToken.IsCancellationRequested) { this._store.Add(result); } } })); page += 1; requestUrl = string.Format(REDDIT_API_BASE, page, Uri.EscapeDataString(this._query)); } return((uint)_itemsAvailable); }
/// <summary> /// Some minor housekeeping on the message before we get into the heavy lifting. /// </summary> public async Task <InputModels.ProcessedMessageInput> PreProcess(InputModels.ProcessedMessageInput processedMessage) { processedMessage.DisplayBody = processedMessage.DisplayBody.Trim(); if (string.IsNullOrEmpty(processedMessage.DisplayBody)) { throw new ArgumentException("Message body is empty."); } var smileys = await SmileyRepository.Records(); // Ensures the smileys are safe from other HTML processing. for (var i = 0; i < smileys.Count(); i++) { var pattern = $@"(^|[\r\n\s]){Regex.Escape(smileys[i].Code)}(?=$|[\r\n\s])"; var replacement = $"$1SMILEY_{i}_INDEX"; processedMessage.DisplayBody = Regex.Replace(processedMessage.DisplayBody, pattern, replacement, RegexOptions.Singleline); } processedMessage.DisplayBody = BBCParser.ToHtml(processedMessage.DisplayBody); return(processedMessage); }
public void ParseBBC(InputModels.ProcessedMessageInput processedMessageInput) { processedMessageInput.DisplayBody = BBCParser.ToHtml(processedMessageInput.DisplayBody); }