Search in sources :

Example 1 with StreamID

use of com.symphony.user.StreamID in project spring-bot by finos.

the class AbstractStreamResolving method getStreamIdForUser.

protected String getStreamIdForUser(SymphonyUser a) {
    if (((SymphonyUser) a).getStreamId() != null) {
        return ((SymphonyUser) a).getStreamId();
    } else {
        long userId = getUserIdForUser(a);
        Stream s = streamsApi.v1ImCreatePost(Collections.singletonList(userId), null);
        a.getId().add(new StreamID(s.getId()));
        return s.getId();
    }
}
Also used : StreamID(com.symphony.user.StreamID) Stream(com.symphony.api.model.Stream) SymphonyUser(org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyUser)

Example 2 with StreamID

use of com.symphony.user.StreamID 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)

Example 3 with StreamID

use of com.symphony.user.StreamID in project spring-bot by finos.

the class SymphonyConversationsImpl method loadUserByStreamAttributes.

protected SymphonyUser loadUserByStreamAttributes(StreamAttributes si) {
    if (si.getStreamAttributes().getMembers().size() != 2) {
        return null;
    } else {
        Long userId = si.getStreamAttributes().getMembers().stream().filter(id -> id != botUserId).findFirst().orElse(null);
        if (userId == null) {
            return null;
        }
        SymphonyUser out = new SymphonyUser(userId);
        out.getId().add(new StreamID(si.getId()));
        return out;
    }
}
Also used : StreamID(com.symphony.user.StreamID) SymphonyUser(org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyUser)

Aggregations

StreamID (com.symphony.user.StreamID)3 SymphonyUser (org.finos.symphony.toolkit.workflow.sources.symphony.content.SymphonyUser)3 SymphonyIdentity (com.symphony.api.id.SymphonyIdentity)1 MembershipList (com.symphony.api.model.MembershipList)1 Stream (com.symphony.api.model.Stream)1 StreamAttributes (com.symphony.api.model.StreamAttributes)1 StreamFilter (com.symphony.api.model.StreamFilter)1 StreamList (com.symphony.api.model.StreamList)1 StreamType (com.symphony.api.model.StreamType)1 TypeEnum (com.symphony.api.model.StreamType.TypeEnum)1 UserId (com.symphony.api.model.UserId)1 UserV2 (com.symphony.api.model.UserV2)1 V2RoomSearchCriteria (com.symphony.api.model.V2RoomSearchCriteria)1 V3RoomAttributes (com.symphony.api.model.V3RoomAttributes)1 V3RoomDetail (com.symphony.api.model.V3RoomDetail)1 V3RoomSearchResults (com.symphony.api.model.V3RoomSearchResults)1 RoomMembershipApi (com.symphony.api.pod.RoomMembershipApi)1 StreamsApi (com.symphony.api.pod.StreamsApi)1 UsersApi (com.symphony.api.pod.UsersApi)1 ArrayList (java.util.ArrayList)1