Public feed
#723140
public Statuses GetTimeline(DateTime since)
{
try
{
String responseBody = GET(String.Format("/statuses/friends_timeline.xml?since={0}", Utility.UrlEncode(since.ToUniversalTime().ToString("r"))));
Statuses statuses;
if (NilClasses.CanDeserialize(responseBody))
{
statuses = new Statuses();
statuses.Status = new Status[0];
}
else
{
statuses = Statuses.Serializer.Deserialize(new StringReader(responseBody)) as Statuses;
if (statuses == null || statuses.Status == null)
{
statuses = new Statuses();
statuses.Status = new Status[0];
}
}
responseBody = GET("/statuses/replies.xml");
if (!NilClasses.CanDeserialize(responseBody))
{
Statuses replies = Statuses.Serializer.Deserialize(new StringReader(responseBody)) as Statuses;
if (statuses != null && statuses.Status != null)
{
List<Status> merged = new List<Status>();
merged.AddRange(statuses.Status);
// Add only newer items than 'since' (it does not work
// for the first query, but well, we likely ignore
// those first results ...)
foreach (Status s in replies.Status)
if (s.CreatedAt > since)
merged.Add(s);
statuses.Status = merged.ToArray();
}
}
return statuses;
}
catch (WebException we)
{
throw;
}
catch (InvalidOperationException ioe)
{
// XmlSerializer
throw new TwitterServiceException(ioe);
}
catch (XmlException xe)
{
throw new TwitterServiceException(xe);
}
catch (IOException ie)
{
throw new TwitterServiceException(ie);
}
}