예제 #1
0
        public void JoinningTest()
        {
            var factory    = new MockCavetubeClientFactory();
            var mockClient = factory.MockCavetubeClient;

            mockClient.Setup(cl => cl.JoinRoom(It.IsAny <string>())).Raises(m => m.OnJoin += null, "roomid");
            mockClient.Setup(cl => cl.LeaveRoom()).Raises(m => m.OnLeave += null, "roomid");
            var  client = factory.CreateCavetubeClient();
            bool check  = false;

            CavetubeUtility.Joinning(
                client,
                "roomId",
                () => {
                check = true;
            });
            Assert.IsTrue(check);
        }
예제 #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
                            );
                    });
                }
        }