/// <summary> /// Livetube用Main(テスト用に差し替え可能な形) /// </summary> /// <param name="clientFactory">使用するILivetubeClientのインスタンスを選択</param> /// <param name="pso2Factory">使用するIPso2LogWatcherのインスタンスを選択</param> /// <param name="waitAction">プログラムの終了を待つためのActionを選択</param> public static void LivetubeMain( ILivetubeClientFactory clientFactory, IPso2LogWatcherFactory pso2Factory, Action waitAction) { using (ILivetubeClient livetube = clientFactory.CreateLivetubeClient()) { string userurl = new Uri(String.Format("http://livetube.cc/{0}/", USER)).AbsoluteUri; string broadcastUrl = livetube.FindCurrentBroadcasting(userurl); if (broadcastUrl == null) { throw new ApplicationException("現配信URLの取得に失敗しました"); } string stream = livetube.FindStream(broadcastUrl); if (stream == null) { throw new ApplicationException("ストリームの取得に失敗しました"); } livetube.Login(USER, PASSWORD); LogWatch( (string user, string message) => { livetube.PostComment(stream, user, message); }, waitAction, pso2Factory ); livetube.Logoff(); } }
/// <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 ); }); } }
private static void LogWatch( Action <string, string> postAction, Action waitAction, IPso2LogWatcherFactory pso2Factory) { using (IPso2LogWatcher watcher = pso2Factory.CreatePso2LogWatcher()) { watcher.Pso2LogEvent += (sender, e) => { if (e.SendTo == "GUILD") { _logger.Debug("{0}: <{1}>{2}", e.From, e.SendTo, e.Message); string person = e.From; if (person == PSO2USER) { person = USER; } postAction(person, e.Message); } }; watcher.Start(); waitAction(); } }
/// <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 ); }); } }
private static void LogWatch( Action<string, string> postAction, Action waitAction, IPso2LogWatcherFactory pso2Factory) { using (IPso2LogWatcher watcher = pso2Factory.CreatePso2LogWatcher()) { watcher.Pso2LogEvent += (sender, e) => { if (e.SendTo == "GUILD") { _logger.Debug("{0}: <{1}>{2}", e.From, e.SendTo, e.Message); string person = e.From; if (person == PSO2USER) person = USER; postAction(person, e.Message); } }; watcher.Start(); waitAction(); } }
/// <summary> /// Livetube用Main(テスト用に差し替え可能な形) /// </summary> /// <param name="clientFactory">使用するILivetubeClientのインスタンスを選択</param> /// <param name="pso2Factory">使用するIPso2LogWatcherのインスタンスを選択</param> /// <param name="waitAction">プログラムの終了を待つためのActionを選択</param> public static void LivetubeMain( ILivetubeClientFactory clientFactory, IPso2LogWatcherFactory pso2Factory, Action waitAction) { using (ILivetubeClient livetube = clientFactory.CreateLivetubeClient()) { string userurl = new Uri(String.Format("http://livetube.cc/{0}/", USER)).AbsoluteUri; string broadcastUrl = livetube.FindCurrentBroadcasting(userurl); if (broadcastUrl == null) throw new ApplicationException("現配信URLの取得に失敗しました"); string stream = livetube.FindStream(broadcastUrl); if (stream == null) throw new ApplicationException("ストリームの取得に失敗しました"); livetube.Login(USER, PASSWORD); LogWatch( (string user, string message) => { livetube.PostComment(stream, user, message); }, waitAction, pso2Factory ); livetube.Logoff(); } }