All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.manywho.sdk.services.controllers.AbstractSocialController Maven / Gradle / Ivy

package com.manywho.sdk.services.controllers;

import com.fasterxml.jackson.databind.node.TextNode;
import com.manywho.sdk.entities.run.elements.config.SocialServiceRequest;
import com.manywho.sdk.entities.social.MentionedWho;
import com.manywho.sdk.entities.social.Message;
import com.manywho.sdk.entities.social.MessageList;
import com.manywho.sdk.entities.social.Who;
import com.manywho.sdk.services.annotations.AuthorizationRequired;
import com.manywho.sdk.validation.social.CreateStream;
import com.manywho.sdk.validation.social.DeleteMessage;
import com.manywho.sdk.validation.social.FollowStream;
import com.manywho.sdk.validation.social.GetCurrentUser;
import com.manywho.sdk.validation.social.GetStreamFollowers;
import com.manywho.sdk.validation.social.GetStreamMessages;
import com.manywho.sdk.validation.social.GetUser;
import com.manywho.sdk.validation.social.LikeMessage;
import com.manywho.sdk.validation.social.PostNewMessage;
import com.manywho.sdk.validation.social.SearchUsersByName;
import com.manywho.sdk.validation.social.ShareMessage;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataParam;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.io.InputStream;
import java.util.List;
import java.util.UUID;

@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public abstract class AbstractSocialController extends AbstractController {

    @Path("/social/stream")
    @POST
    @AuthorizationRequired
    public abstract TextNode createStream(@CreateStream SocialServiceRequest serviceRequest) throws Exception;

    @Path("/social/stream/{id}/message/{messageId}")
    @POST
    @AuthorizationRequired
    public abstract TextNode deleteMessage(@DeleteMessage SocialServiceRequest serviceRequest,
                                           @PathParam("id") UUID streamId,
                                           @PathParam("messageId") UUID messageId)
            throws Exception;

    @Path("/social/stream/{id}/follow/{follow}")
    @POST
    @AuthorizationRequired
    public abstract TextNode followStream(@FollowStream SocialServiceRequest serviceRequest,
                                          @PathParam("id") UUID streamId,
                                          @PathParam("follow") boolean follow)
            throws Exception;

    @Path("/social/stream/{id}/user/me")
    @POST
    @AuthorizationRequired
    public abstract Who getCurrentUser(@GetCurrentUser SocialServiceRequest serviceRequest,
                                       @PathParam("id") UUID streamId)
            throws Exception;

    @Path("/social/stream/{id}/follower")
    @POST
    @AuthorizationRequired
    public abstract List getStreamFollowers(@GetStreamFollowers SocialServiceRequest serviceRequest,
                                                 @PathParam("id") UUID streamId)
            throws Exception;

    @Path("/social/stream/{id}")
    @POST
    @AuthorizationRequired
    public abstract MessageList getStreamMessages(@GetStreamMessages SocialServiceRequest serviceRequest,
                                                  @PathParam("id") UUID streamId)
            throws Exception;

    @Path("/social/stream/{id}/user/{userId}")
    @POST
    @AuthorizationRequired
    public abstract Who getUser(@GetUser SocialServiceRequest serviceRequest, @PathParam("id") UUID streamId,
                                @PathParam("userId") String userId)
            throws Exception;

    @Path("/social/stream/{id}/message/{messageId}/like/{like}")
    @POST
    @AuthorizationRequired
    public abstract TextNode likeMessage(@LikeMessage SocialServiceRequest serviceRequest,
                                         @PathParam("id") UUID streamId,
                                         @PathParam("messageId") UUID messageId,
                                         @PathParam("like") boolean like)
            throws Exception;

    @Path("/social/stream/{id}/message")
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @AuthorizationRequired
    public abstract Message postNewMessage(@PostNewMessage @FormDataParam("serviceRequest") SocialServiceRequest serviceRequest,
                                           @FormDataParam("file") InputStream file,
                                           @FormDataParam("file") FormDataContentDisposition fileDetails,
                                           @PathParam("id") UUID streamId) throws Exception;

    @Path("/social/stream/{id}/user/name/{name}")
    @POST
    @AuthorizationRequired
    public abstract List searchUsersByName(@SearchUsersByName SocialServiceRequest serviceRequest,
                                                         @PathParam("id") UUID streamId,
                                                         @PathParam("name") String name)
            throws Exception;

    @Path("/social/stream/{id}/share")
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @AuthorizationRequired
    public abstract Message shareMessage(@ShareMessage @FormDataParam("serviceRequest") SocialServiceRequest serviceRequest,
                                         @PathParam("id") UUID streamId) throws Exception;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy