Пример #1
0
        /// <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();
            }
        }
Пример #2
0
        /// <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
                    );
                });
            }
        }
Пример #3
0
 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();
     }
 }
Пример #4
0
        /// <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
                            );
                    });
                }
        }
Пример #5
0
 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();
     }
 }
Пример #6
0
        /// <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();
            }
        }