/// <summary> /// Cavetube用Main(テスト用に差し替え可能な形) /// </summary> /// <param name="authFactory">使用するICavetubeAuthのインスタンスを選択</param> /// <param name="clientFactory">使用するICavetubeCelientのインスタンスを選択</param> /// <param name="pso2Factory">使用するIPso2LogWatcherのインスタンスを選択</param> /// <param name="waitAction">プログラムの終了を待つためのActionを選択</param> public static void CavetubeMain( ICavetubeAuthFactory authFactory, ICavetubeClientFactory clientFactory, IPso2LogWatcherFactory pso2Factory, Action waitAction) { using (CavetubeAuthManager manager = new CavetubeAuthManager(USER, PASSWORD, authFactory)) using (var client = clientFactory.CreateCavetubeClient()) { client.Connect(); // 部屋名取得はapi経由でいいのだろうか? // 特定ユーザーの配信をチェックするのはコメントサーバからできるかも String url = new Uri(String.Format("http://gae.cavelis.net/live/{0}", USER)).AbsoluteUri; ISummary summary = client.GetSummary(url); if (summary.RoomId == null) throw new ApplicationException("部屋IDの取得に失敗しました"); CavetubeUtility.Joinning(client, summary.RoomId, () => { _logger.Debug("Joinした"); _logger.Debug("API Key: {0}", manager.GetApiKey()); LogWatch( (String user, String message) => { client.PostComment(user, message, manager.GetApiKey()); }, waitAction, pso2Factory ); }); } }
/// <summary> /// Cavetube用Main(テスト用に差し替え可能な形) /// </summary> /// <param name="authFactory">使用するICavetubeAuthのインスタンスを選択</param> /// <param name="clientFactory">使用するICavetubeCelientのインスタンスを選択</param> /// <param name="pso2Factory">使用するIPso2LogWatcherのインスタンスを選択</param> /// <param name="waitAction">プログラムの終了を待つためのActionを選択</param> public static void CavetubeMain( ICavetubeAuthFactory authFactory, ICavetubeClientFactory clientFactory, IPso2LogWatcherFactory pso2Factory, Action waitAction) { using (CavetubeAuthManager manager = new CavetubeAuthManager(USER, PASSWORD, authFactory)) using (var client = clientFactory.CreateCavetubeClient()) { client.Connect(); // 部屋名取得はapi経由でいいのだろうか? // 特定ユーザーの配信をチェックするのはコメントサーバからできるかも String url = new Uri(String.Format("http://gae.cavelis.net/live/{0}", USER)).AbsoluteUri; ISummary summary = client.GetSummary(url); if (summary.RoomId == null) { throw new ApplicationException("部屋IDの取得に失敗しました"); } CavetubeUtility.Joinning(client, summary.RoomId, () => { _logger.Debug("Joinした"); _logger.Debug("API Key: {0}", manager.GetApiKey()); LogWatch( (String user, String message) => { client.PostComment(user, message, manager.GetApiKey()); }, waitAction, pso2Factory ); }); } }
/// <summary> /// テスト用コンストラクタ /// </summary> /// <param name="user">ユーザー名</param> /// <param name="password">パスワード</param> /// <param name="factory">認証に必要なオブジェクトのファクトリオブジェクト</param> public CavetubeAuthManager(String user, String password, ICavetubeAuthFactory factory) { _user = user; _pass = password; _auth = factory.CreateCavetubeAuth(); }