示例#1
0
        public void TestStaticRoomLifecycleAsyncCallback()
        {
            const string roomName        = "Room Lifecycle {0}";
            const string roomDescription = "Description of the room lifecycle {0}";

            TestStaticCreateRoomAsyncCallback(
                roomId => TestStaticPutRoomAsyncCallback(
                    roomId,
                    roomId => TestStaticGetRoomAsyncCallback(
                        roomId,
                        TestStaticDeleteRoomAsyncCallback)));

            // [POST] /rooms.
            void TestStaticCreateRoomAsyncCallback(Action <long> next)
            {
                var identifier = "New";
                var parameters = new NewRoomParameters
                {
                    Description        = string.Format(CultureInfo.InvariantCulture, roomDescription, identifier),
                    IconPreset         = IconPresetValue.Group,
                    Link               = false,
                    LinkCode           = "weqxdfas",
                    LinkNeedAcceptance = true,
                    MembersAdminIds    = new[] { AccountId },
                    MembersMemberIds   = null,
                    MembersReadonlyIds = null,
                    Name               = string.Format(CultureInfo.InvariantCulture, roomName, identifier),
                };

                ChatworkClient.PostRoomAsync(
                    Token,
                    response =>
                {
                    AssertPostRoomsResponse(response);
                    next.Invoke(response.Data.RoomId);
                },
                    parameters);
            }

            // [GET] /rooms/{room_id}.
            void TestStaticGetRoomAsyncCallback(long roomId, Action <long> next)
            {
                ChatworkClient.GetRoomAsync(
                    Token,
                    response =>
                {
                    AssertGetRoomResponse(response, roomId);
                    next.Invoke(roomId);
                },
                    roomId);
            }

            // [PUT] /rooms/{room_id}.
            void TestStaticPutRoomAsyncCallback(long roomId, Action <long> next)
            {
                var iconPreset = IconPresetValue.Business;
                var identifier = StringValueAttribute.GetStringValue(iconPreset);
                var parameters = new UpdateRoomParameters
                {
                    Description = string.Format(CultureInfo.InvariantCulture, roomDescription, identifier),
                    IconPreset  = iconPreset,
                    Name        = string.Format(CultureInfo.InvariantCulture, roomName, identifier),
                };

                ChatworkClient.PutRoomAsync(
                    Token,
                    response =>
                {
                    AssertPutRoomResponse(response, roomId);
                    next.Invoke(roomId);
                },
                    roomId,
                    parameters);
            }

            // [DELETE] /rooms/{room_id}.
            void TestStaticDeleteRoomAsyncCallback(long roomId)
            {
                var parameters = new DeleteRoomParameters
                {
                    ActionType = ActionTypeValue.Leave,
                };

                ChatworkClient.DeleteRoomAsync(
                    Token,
                    response => AssertDeleteRoomResponse(response),
                    roomId,
                    parameters);
            }
        }