AppendVertexXmlNodesForSearchTerm
(
String sSearchTerm,
WhatToInclude eWhatToInclude,
Int32 iMaximumStatuses,
GraphMLXmlDocument oGraphMLXmlDocument,
Dictionary<String, TwitterUser> oUserIDDictionary,
RequestStatistics oRequestStatistics
)
{
Debug.Assert( !String.IsNullOrEmpty(sSearchTerm) );
Debug.Assert(iMaximumStatuses > 0);
Debug.Assert(iMaximumStatuses != Int32.MaxValue);
Debug.Assert(oGraphMLXmlDocument != null);
Debug.Assert(oUserIDDictionary != null);
Debug.Assert(oRequestStatistics != null);
AssertValid();
Boolean bExpandStatusUrls = WhatToIncludeFlagIsSet(
eWhatToInclude, WhatToInclude.ExpandedStatusUrls);
Boolean bIncludeStatistics = WhatToIncludeFlagIsSet(
eWhatToInclude, WhatToInclude.Statistics);
ReportProgress("Getting a list of tweets.");
// Get the tweets that contain the search term. Note that multiple
// tweets may have the same author.
Debug.Assert(m_oTwitterUtil != null);
foreach ( Dictionary<String, Object> oStatusValueDictionary in
m_oTwitterUtil.EnumerateSearchStatuses(
sSearchTerm, iMaximumStatuses, oRequestStatistics,
new ReportProgressHandler(this.ReportProgress),
new CheckCancellationPendingHandler(
this.CheckCancellationPending)
) )
{
const String UserKeyName = "user";
if ( !oStatusValueDictionary.ContainsKey(UserKeyName) )
{
// This has actually happened--Twitter occasionally sends a
// status without user information.
continue;
}
Dictionary<String, Object> oUserValueDictionary =
( Dictionary<String, Object> )
oStatusValueDictionary[UserKeyName];
TwitterUser oTwitterUser;
if ( !TwitterSearchNetworkGraphMLUtil.
TryAppendVertexXmlNode(oUserValueDictionary,
bIncludeStatistics, true, oGraphMLXmlDocument,
oUserIDDictionary, out oTwitterUser) )
{
continue;
}
// Parse the status and add it to the user's status collection.
if ( !TwitterSearchNetworkGraphMLUtil.TryAddStatusToUser(
oStatusValueDictionary, oTwitterUser, bExpandStatusUrls) )
{
continue;
}
}
}