// TwitterFactory.cs created with MonoDevelop
// User: raul@bgta.net at 23:07 25/05/2008
//
using System;
using System.Web;
using System.Net;
using gTwitter.Core.Serialization;
using System.Collections;
namespace gTwitter.Core
{
///
/// Twitter Factory Class
///
public class TwitterFactory : IDisposable
{
#region "Private variables"
private TwitterSettings _settings = new TwitterSettings();
private ArrayList _sessions = new ArrayList();
private bool Disposed = false;
#endregion
#region "Public properties"
///
/// Twitter Factory Settings
///
public TwitterSettings Settings {
get {
return _settings;
}
set {
_settings = value;
}
}
#endregion
///
/// Constructor
///
public TwitterFactory()
{
}
///
/// Constructor
///
///
/// A . Twitter username.
///
///
/// A . Twitter password.
///
public TwitterFactory(string username, string password)
{
this.Settings.Username = username;
this.Settings.Password = password;
}
#region "Events"
///
/// Raised on Dispose
///
public event EventHandler OnDispose;
internal virtual void OnSessionClosed(TwitterSession session, EventArgs e)
{
_sessions.Remove(session);
}
#endregion
#region "IDisposable"
///
/// Automatcly called when object is Disposed.
///
///
public void Dispose()
{
if(!this.Disposed)
{
foreach(TwitterSession session in _sessions)
{
session.Dispose();
}
_sessions.Clear();
_settings = null;
}
this.Disposed = true;
this.OnDispose(this, new EventArgs());
}
#endregion
///
/// Open a new Twitter Session using the current Settings
///
///
/// A Twitter Session.
///
public TwitterSession OpenSession()
{
TwitterSession session = new TwitterSession(this);
_sessions.Add(session);
session.OnDispose += this.OnSessionClosed;
return session;
}
}
}