public User FromPointer(IUserPointer userPointer) { lock (_syncLock) { if (_users.ContainsKey(userPointer)) { return (_users[userPointer]); } } User user = null; switch (userPointer.ProviderNameSpace) { case "twitter": user = RetrieveTwitterUser((TwitterUserPointer)userPointer); break; default: throw new NotSupportedException("userPointer.ProviderNameSpace not supported yet"); } if (user != null) { lock (_syncLock) { _users[userPointer] = user; // last in wins is OK (in case of race condition,t hat is) } } return user; }
public bool Equals(IUserPointer userPointer) { if (userPointer == null) { return false; } return Equals(MatchTag, userPointer.MatchTag); }
public MockRawMessage(string sourceText, IMessagePointer messagePointer, IUserPointer createdBy, DateTime dateTimeUTC) : this() { Text = sourceText; Pointer = messagePointer; CreatedBy = createdBy; Timestamp = dateTimeUTC; }
public MockRawMessage(string sourceText, IMessagePointer messagePointer, IUserPointer createdBy, string dateTimeUTC) : this(sourceText, messagePointer, createdBy, DateUtils.UTCDateTimeFromTwitterTimeStamp(dateTimeUTC)) { }
public IEnumerable<IMessage> QueryMessages(IEnumerable<ITag> tags, IUserPointer user) { List<string> matchTags = tags.Select(tag => tag.MatchTag).ToList(); if (user != null) { matchTags.Add(user.MatchTag); } IEnumerable<IMessage> candidates; if (matchTags.Count > 0) { candidates = _index.ContainsKey(matchTags[0]) ? _index[matchTags[0]] : new List<IMessage>(); } else { candidates = _allMessageSource; } foreach (IMessage message in candidates) { bool include = true; foreach (string matchTag in matchTags) { if (!message.MatchesMatchTag(matchTag)) { include = false; break; } } if (include) { yield return message; } } }