Search in sources :

Example 1 with V3RoomDetail

use of com.symphony.api.model.V3RoomDetail in project spring-bot by finos.

the class TestRoomAndUsersBuilder method testEnsureRoom.

@Test
public void testEnsureRoom() {
    ruBuilder.setDefaultAdministrators(Collections.singletonList(new SymphonyUser(1111l)));
    // create room
    when(streamsApi.v1StreamsListPost(Mockito.isNull(), Mockito.any(), Mockito.eq(0), Mockito.eq(50))).thenAnswer(c -> {
        StreamList out = new StreamList();
        out.add(new StreamAttributes().roomAttributes(new RoomSpecificStreamAttributes().name("Some Test Room")).id("abc123").streamType(new StreamType().type(TypeEnum.ROOM)));
        UserIdList l = new UserIdList();
        // robski
        l.add(765l);
        // the bot
        l.add(654321l);
        out.add(new StreamAttributes().streamAttributes(new ConversationSpecificStreamAttributes().members(l)).id("283746").streamType(new StreamType().type(TypeEnum.IM)));
        return out;
    });
    when(streamsApi.v3RoomCreatePost(any(), isNull())).then(a -> new V3RoomDetail().roomSystemInfo(new RoomSystemInfo().id("456")).roomAttributes(new V3RoomAttributes()._public(false).name("Some Test Room").description("Still Bogus")));
    when(streamsApi.v3RoomSearchPost(Mockito.any(), Mockito.isNull(), Mockito.isNull(), Mockito.isNull())).then(a -> new V3RoomSearchResults().rooms(Collections.emptyList()));
    SymphonyRoom rd = new SymphonyRoom("Some Test Room", null);
    SymphonyUser su = new SymphonyUser(2342l);
    SymphonyRoom out = ruBuilder.ensureChat(rd, Collections.singletonList(su), SymphonyConversations.simpleMeta("Automated Test Room Created", true));
    assertEquals("Some Test Room", out.getName());
    assertEquals(2, ruBuilder.getAllConversations().size());
    assertEquals("456", out.getStreamId());
    // return members
    MembershipList ml = new MembershipList();
    ml.add(new MemberInfo().id(123l).owner(true));
    when(rmApi.v2RoomIdMembershipListGet(Mockito.anyString(), Mockito.isNull())).thenReturn(ml);
    List<User> chatMembers = ruBuilder.getChatMembers(out);
    Assertions.assertEquals(Collections.singletonList(new SymphonyUser(123l, ROB_NAME, ROB_EXAMPLE_EMAIL)), chatMembers);
}
Also used : MembershipList(com.symphony.api.model.MembershipList) StreamType(com.symphony.api.model.StreamType) V3RoomDetail(com.symphony.api.model.V3RoomDetail) User(org.finos.symphony.toolkit.workflow.content.User) SymphonyUser(org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyUser) RoomSystemInfo(com.symphony.api.model.RoomSystemInfo) StreamList(com.symphony.api.model.StreamList) ConversationSpecificStreamAttributes(com.symphony.api.model.ConversationSpecificStreamAttributes) RoomSpecificStreamAttributes(com.symphony.api.model.RoomSpecificStreamAttributes) StreamAttributes(com.symphony.api.model.StreamAttributes) RoomSpecificStreamAttributes(com.symphony.api.model.RoomSpecificStreamAttributes) SymphonyRoom(org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyRoom) UserIdList(com.symphony.api.model.UserIdList) ConversationSpecificStreamAttributes(com.symphony.api.model.ConversationSpecificStreamAttributes) MemberInfo(com.symphony.api.model.MemberInfo) V3RoomAttributes(com.symphony.api.model.V3RoomAttributes) SymphonyUser(org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyUser) V3RoomSearchResults(com.symphony.api.model.V3RoomSearchResults) Test(org.junit.jupiter.api.Test)

Example 2 with V3RoomDetail

use of com.symphony.api.model.V3RoomDetail in project spring-bot by finos.

the class SymphonyConversationsImpl method ensureChat.

@Override
public SymphonyRoom ensureChat(Chat r, List<User> users, Map<String, Object> meta) {
    String description = "";
    String name = r.getName();
    boolean isPublic = false;
    description = (String) meta.getOrDefault(ROOM_DESCRIPTION, "");
    isPublic = (boolean) meta.getOrDefault(ROOM_PUBLIC, false);
    SymphonyRoom theRoom = null;
    if (r instanceof SymphonyRoom) {
        if (((SymphonyRoom) r).getStreamId() != null) {
            theRoom = (SymphonyRoom) r;
        } else {
            theRoom = loadRoomByName(name);
        }
    }
    if (theRoom == null) {
        // create the room
        V3RoomAttributes ra = new V3RoomAttributes().name(name).description(description)._public(isPublic).discoverable(isPublic);
        V3RoomDetail detail = streamsApi.v3RoomCreatePost(ra, null);
        String streamId = detail.getRoomSystemInfo().getId();
        theRoom = new SymphonyRoom(name, streamId);
        // next, we need to make sure that all of the admins are members of the room and owners.
        List<Long> adminIds = getDefaultAdministrators().stream().filter(u -> u instanceof SymphonyUser).map(u -> (SymphonyUser) u).map(su -> Long.parseLong(su.getUserId())).filter(id -> id != null).collect(Collectors.toList());
        for (Long user : adminIds) {
            UserId u = new UserId().id(user);
            rmApi.v1RoomIdMembershipAddPost(u, null, streamId);
            rmApi.v1RoomIdMembershipPromoteOwnerPost(u, null, streamId);
        }
        LOG.info("Created room {} with admins {} ", theRoom, getDefaultAdministrators());
    }
    // next, ensure that all the users are in the room
    String streamId = theRoom.getStreamId();
    users.stream().filter(u -> u instanceof SymphonyUser).map(u -> (SymphonyUser) u).forEach(u -> rmApi.v1RoomIdMembershipAddPost(new UserId().id(Long.parseLong(u.getUserId())), null, streamId));
    return theRoom;
}
Also used : V2RoomSearchCriteria(com.symphony.api.model.V2RoomSearchCriteria) User(org.finos.symphony.toolkit.workflow.content.User) SymphonyIdentity(com.symphony.api.id.SymphonyIdentity) TypeEnum(com.symphony.api.model.StreamType.TypeEnum) LoggerFactory(org.slf4j.LoggerFactory) V3RoomDetail(com.symphony.api.model.V3RoomDetail) StreamsApi(com.symphony.api.pod.StreamsApi) InitializingBean(org.springframework.beans.factory.InitializingBean) V3RoomAttributes(com.symphony.api.model.V3RoomAttributes) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Map(java.util.Map) StreamList(com.symphony.api.model.StreamList) UserV2(com.symphony.api.model.UserV2) V3RoomSearchResults(com.symphony.api.model.V3RoomSearchResults) Logger(org.slf4j.Logger) UsersApi(com.symphony.api.pod.UsersApi) SymphonyUser(org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyUser) AbstractStreamResolving(org.finos.symphony.toolkit.workflow.sources.symphony.streams.AbstractStreamResolving) MembershipList(com.symphony.api.model.MembershipList) SymphonyApiProperties(org.finos.symphony.toolkit.spring.api.properties.SymphonyApiProperties) RoomMembershipApi(com.symphony.api.pod.RoomMembershipApi) Set(java.util.Set) Chat(org.finos.symphony.toolkit.workflow.content.Chat) Collectors(java.util.stream.Collectors) List(java.util.List) Addressable(org.finos.symphony.toolkit.workflow.content.Addressable) StreamAttributes(com.symphony.api.model.StreamAttributes) StreamID(com.symphony.user.StreamID) SymphonyRoom(org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyRoom) StreamFilter(com.symphony.api.model.StreamFilter) Collections(java.util.Collections) StreamType(com.symphony.api.model.StreamType) UserId(com.symphony.api.model.UserId) V3RoomDetail(com.symphony.api.model.V3RoomDetail) UserId(com.symphony.api.model.UserId) V3RoomAttributes(com.symphony.api.model.V3RoomAttributes) SymphonyUser(org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyUser) SymphonyRoom(org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyRoom)

Aggregations

MembershipList (com.symphony.api.model.MembershipList)2 StreamAttributes (com.symphony.api.model.StreamAttributes)2 StreamList (com.symphony.api.model.StreamList)2 StreamType (com.symphony.api.model.StreamType)2 V3RoomAttributes (com.symphony.api.model.V3RoomAttributes)2 V3RoomDetail (com.symphony.api.model.V3RoomDetail)2 V3RoomSearchResults (com.symphony.api.model.V3RoomSearchResults)2 User (org.finos.symphony.toolkit.workflow.content.User)2 SymphonyRoom (org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyRoom)2 SymphonyUser (org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyUser)2 SymphonyIdentity (com.symphony.api.id.SymphonyIdentity)1 ConversationSpecificStreamAttributes (com.symphony.api.model.ConversationSpecificStreamAttributes)1 MemberInfo (com.symphony.api.model.MemberInfo)1 RoomSpecificStreamAttributes (com.symphony.api.model.RoomSpecificStreamAttributes)1 RoomSystemInfo (com.symphony.api.model.RoomSystemInfo)1 StreamFilter (com.symphony.api.model.StreamFilter)1 TypeEnum (com.symphony.api.model.StreamType.TypeEnum)1 UserId (com.symphony.api.model.UserId)1 UserIdList (com.symphony.api.model.UserIdList)1 UserV2 (com.symphony.api.model.UserV2)1