Skip to content

Instantly share code, notes, and snippets.

@panesofglass
Forked from mattpodwysocki/twitter.cs
Created March 21, 2010 20:11
Show Gist options
  • Save panesofglass/339533 to your computer and use it in GitHub Desktop.
Save panesofglass/339533 to your computer and use it in GitHub Desktop.
public static IObservable<WebResponse> GetResponseAsync(this WebRequest request)
{
return Observable.FromAsyncPattern <WebResponse>(request.BeginGetResponse, request.EndGetResponse)();
}
public static IObservable<Stream> GetResponseStreamAsync(this WebRequest request)
{
return Observable.FromAsyncPattern <Stream>(request.BeginGetRequestStream, request.EndGetRequestStream)();
}
private static IObservable<WebRequest> CreateWebRequest(string url, string userName, string password, string method)
{
return Observable.Create<WebRequest>(observer =>
{
try
{
var request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = new NetworkCredential(userName, password);
request.Method = method;
observer.OnNext(request);
observer.OnCompleted();
}
catch (Exception exception)
{
observer.OnError(exception);
}
return () => { };
});
}
var tweetsObservalue =
from request in CreateWebRequest("http://twitter.com/statuses/friends_timeline.xml", userName, password, "GET")
from response in request.GetResponseAsync()
let responseStream = response.GetResponseStream()
let reader = new StreamReader(responseStream)
select reader.ReadToEnd();
tweetsObservalue.Subscribe(tweet => MessageBox.Show(tweet));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment