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

com.github.jamesnetherton.zulip.client.api.user.UserService Maven / Gradle / Ivy

The newest version!
package com.github.jamesnetherton.zulip.client.api.user;

import com.github.jamesnetherton.zulip.client.api.core.ZulipService;
import com.github.jamesnetherton.zulip.client.api.user.request.AddAlertWordsApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.AddUsersToGroupApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.CreateUserApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.CreateUserGroupApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.DeactivateOwnUserApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.DeactivateUserApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.DeleteUserAttachmentApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.DeleteUserGroupApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetAllAlertWordsApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetAllUserPresenceApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetAllUsersApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetOwnUserApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetSubGroupsOfUserGroupApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetUserApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetUserAttachmentsApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetUserGroupMembersApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetUserGroupMembershipStatusApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetUserGroupsApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetUserPresenceApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.GetUserStatusApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.MuteUserApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.ReactivateUserApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.RemoveAlertWordsApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.RemoveUsersFromGroupApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.SetTypingStatusApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.UnmuteUserApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.UpdateNotificationSettingsApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.UpdateOwnUserPresenceApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.UpdateOwnUserSettingsApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.UpdateOwnUserStatusApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.UpdateUserApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.UpdateUserGroupApiRequest;
import com.github.jamesnetherton.zulip.client.api.user.request.UpdateUserGroupSubGroupsApiRequest;
import com.github.jamesnetherton.zulip.client.http.ZulipHttpClient;

/**
 * Zulip user APIs.
 */
public class UserService implements ZulipService {

    private final ZulipHttpClient client;

    /**
     * Constructs a {@link UserService}.
     *
     * @param client The Zulip HTTP client
     */
    public UserService(ZulipHttpClient client) {
        this.client = client;
    }

    /**
     * Create a new user.
     *
     * @see             https://zulip.com/api/create-user
     *
     * @param  email    The email address of the new user
     * @param  fullName The name of the new user
     * @param  password The password of the new user
     * @return          The {@link CreateUserApiRequest} builder object
     */
    public CreateUserApiRequest createUser(String email, String fullName, String password) {
        return new CreateUserApiRequest(this.client, email, fullName, password);
    }

    /**
     * Deactivate a user.
     *
     * @see           https://zulip.com/api/deactivate-user
     *
     * @param  userId The id of the user to deactivate
     * @return        The {@link DeactivateUserApiRequest} builder object
     */
    public DeactivateUserApiRequest deactivate(long userId) {
        return new DeactivateUserApiRequest(this.client, userId);
    }

    /**
     * Deactivates the user who invokes this endpoint.
     *
     * @see    https://zulip.com/api/deactivate-own-user
     *
     * @return The {@link DeactivateOwnUserApiRequest} builder object
     */
    public DeactivateOwnUserApiRequest deactivateOwnUser() {
        return new DeactivateOwnUserApiRequest(this.client);
    }

    /**
     * Reactivates a user.
     *
     * @see           https://zulip.com/api/reactivate-user
     *
     * @param  userId The user id to reactivate
     * @return        The {@link ReactivateUserApiRequest} builder object
     */
    public ReactivateUserApiRequest reactivate(long userId) {
        return new ReactivateUserApiRequest(this.client, userId);
    }

    /**
     * Sets user 'typing' status
     *
     * @see              https://zulip.com/api/set-typing-status
     *
     * @param  operation The typing operation to apply
     * @param  userIds   Array of user ids to add to set the typing status for
     * @return           The {@link SetTypingStatusApiRequest} builder object
     */
    public SetTypingStatusApiRequest setTyping(TypingOperation operation, long... userIds) {
        return new SetTypingStatusApiRequest(this.client, operation, userIds);
    }

    /**
     * Sets user 'typing' status
     *
     * @see              https://zulip.com/api/set-typing-status
     *
     * @param  operation The typing operation to apply
     * @param  streamId  The id of the stream in which the message is being typed
     * @param  topic     The name of the topic in which the message is being typed
     * @return           The {@link SetTypingStatusApiRequest} builder object
     */
    public SetTypingStatusApiRequest setTyping(TypingOperation operation, long streamId, String topic) {
        return new SetTypingStatusApiRequest(this.client, operation, streamId, topic);
    }

    /**
     * Create a new user group.
     *
     * @see                https://zulip.com/api/create-user-group
     *
     * @param  name        The name of the user group
     * @param  description The user group description
     * @param  userIds     Array of user ids to add to the group
     * @return             The {@link CreateUserGroupApiRequest} builder object
     */
    public CreateUserGroupApiRequest createUserGroup(String name, String description, long... userIds) {
        return new CreateUserGroupApiRequest(this.client, name, description, userIds);
    }

    /**
     * Updates a user group.
     *
     * @see            https://zulip.com/api/update-user-group
     *
     * @param  groupId The id of the group to update
     * @return         The {@link UpdateUserGroupApiRequest} builder object
     */
    public UpdateUserGroupApiRequest updateUserGroup(long groupId) {
        return new UpdateUserGroupApiRequest(this.client, groupId);
    }

    /**
     * Updates a user group.
     *
     * @see                https://zulip.com/api/update-user-group
     *
     * @param  name        The updated name of the user group
     * @param  description The updated description of the user group
     * @param  groupId     The id of the group to update
     * @return             The {@link UpdateUserGroupApiRequest} builder object
     */
    public UpdateUserGroupApiRequest updateUserGroup(String name, String description, long groupId) {
        return new UpdateUserGroupApiRequest(this.client, name, description, groupId);
    }

    /**
     * Deletes a user group.
     *
     * @see            https://zulip.com/api/remove-user-group
     *
     * @param  groupId The id of the group to delete
     * @return         The {@link DeleteUserGroupApiRequest} builder object
     */
    public DeleteUserGroupApiRequest deleteUserGroup(long groupId) {
        return new DeleteUserGroupApiRequest(this.client, groupId);
    }

    /**
     * Add sers to a group.
     *
     * @see            https://zulip.com/api/update-user-group-members
     *
     * @param  groupId The id of the group to add users to
     * @param  userIds Array of user ids to add to the group
     * @return         The {@link AddUsersToGroupApiRequest} builder object
     */
    public AddUsersToGroupApiRequest addUsersToGroup(long groupId, long... userIds) {
        return new AddUsersToGroupApiRequest(this.client, groupId, userIds);
    }

    /**
     * Remove users from a group.
     *
     * @see            https://zulip.com/api/update-user-group-members
     *
     * @param  groupId The id of the group to remove users from
     * @param  userIds Array of user ids to remove from the group
     * @return         The {@link RemoveUsersFromGroupApiRequest} builder object
     */
    public RemoveUsersFromGroupApiRequest removeUsersFromGroup(long groupId, long... userIds) {
        return new RemoveUsersFromGroupApiRequest(this.client, groupId, userIds);
    }

    /**
     * Get all user groups.
     *
     * @see    https://zulip.com/api/get-user-groups
     *
     * @return The {@link GetUserGroupsApiRequest} builder object
     */
    public GetUserGroupsApiRequest getUserGroups() {
        return new GetUserGroupsApiRequest(this.client);
    }

    /**
     * Get user group members.
     *
     * @see                https://zulip.com/api/get-user-group-members
     *
     * @param  userGroupId The id of the user group to fetch members from
     * @return             The {@link GetUserGroupMembersApiRequest} builder object
     */
    public GetUserGroupMembersApiRequest getUserGroupMembers(long userGroupId) {
        return new GetUserGroupMembersApiRequest(this.client, userGroupId);
    }

    /**
     * Check whether a user is member of a user group.
     *
     * @see                https://zulip.com/api/get-is-user-group-member
     *
     * @param  userGroupId The id of the user group on which the user belongs
     * @param  userId      The id of the user
     * @return             The {@link GetUserGroupMembershipStatusApiRequest} builder object
     */
    public GetUserGroupMembershipStatusApiRequest getUserGroupMembershipStatus(long userGroupId, long userId) {
        return new GetUserGroupMembershipStatusApiRequest(this.client, userGroupId, userId);
    }

    /**
     * Update user notification settings.
     *
     * @see    https://zulip.com/api/update-notification-settings
     *
     * @return The {@link UpdateNotificationSettingsApiRequest} builder object
     */
    @Deprecated
    public UpdateNotificationSettingsApiRequest updateNotificationSettings() {
        return new UpdateNotificationSettingsApiRequest(this.client);
    }

    /**
     * Get information about the user who invokes this endpoint
     *
     * @see    https://zulip.com/api/get-own-user
     *
     * @return The {@link GetOwnUserApiRequest} builder object
     */
    public GetOwnUserApiRequest getOwnUser() {
        return new GetOwnUserApiRequest(this.client);
    }

    /**
     * Gets all users.
     *
     * @see    https://zulip.com/api/get-users
     *
     * @return The {@link GetAllUsersApiRequest} builder object
     */
    public GetAllUsersApiRequest getAllUsers() {
        return new GetAllUsersApiRequest(this.client);
    }

    /**
     * Gets a user by id.
     *
     * @see           https://zulip.com/api/get-user
     *
     * @param  userId The id of the user to get
     * @return        The {@link GetUserApiRequest} builder object
     */
    public GetUserApiRequest getUser(long userId) {
        return new GetUserApiRequest(this.client, userId);
    }

    /**
     * Gets a user by the given Zulip display email address.
     *
     * @see          https://zulip.com/api/get-user-by-email
     *
     * @param  email The Zulip display email address of the user to get
     * @return       The {@link GetUserApiRequest} builder object
     */
    public GetUserApiRequest getUser(String email) {
        return new GetUserApiRequest(this.client, email);
    }

    /**
     * Update a user.
     *
     * @see           https://zulip.com/api/update-user
     *
     * @param  userId The id of the user to update
     * @return        The {@link UpdateUserApiRequest} builder object
     */
    public UpdateUserApiRequest updateUser(long userId) {
        return new UpdateUserApiRequest(this.client, userId);
    }

    /**
     * Get user presence information.
     *
     * @see          https://zulip.com/api/get-user-presence
     *
     * @param  email The email address of the user to get presence details for
     * @return       The {@link GetUserPresenceApiRequest} builder object
     */
    public GetUserPresenceApiRequest getUserPresence(String email) {
        return new GetUserPresenceApiRequest(this.client, email);
    }

    /**
     * Gets all user presence details.
     *
     * @see    https://zulip.com/api/get-presence
     *
     * @return The {@link GetAllUserPresenceApiRequest} builder object
     */
    public GetAllUserPresenceApiRequest getAllUserPresence() {
        return new GetAllUserPresenceApiRequest(this.client);
    }

    /**
     * Fetches presence details for the current client user.
     *
     * @see           https://zulip.com/api/update-presence
     *
     * @param  status The status of the user
     * @return        The {@link UpdateOwnUserPresenceApiRequest} builder object
     */
    public UpdateOwnUserPresenceApiRequest updateOwnUserPresence(UserPresenceStatus status) {
        return new UpdateOwnUserPresenceApiRequest(this.client, status);
    }

    /**
     * Get user attachments.
     *
     * @see    https://zulip.com/api/update-user-group-members
     *
     * @return The {@link GetUserAttachmentsApiRequest} builder object
     */
    public GetUserAttachmentsApiRequest getUserAttachments() {
        return new GetUserAttachmentsApiRequest(this.client);
    }

    /**
     * Deletes an attachment.
     *
     * @see                 https://zulip.com/api/remove-attachment
     *
     * @param  attachmentId The id of the attachment to delete
     * @return              The {@link DeleteUserAttachmentApiRequest} builder object
     */
    public DeleteUserAttachmentApiRequest deleteAttachment(long attachmentId) {
        return new DeleteUserAttachmentApiRequest(this.client, attachmentId);
    }

    /**
     * Mute a user.
     *
     * @see           https://zulip.com/api/mute-user
     *
     * @param  userId The id of the user to mute
     * @return        The {@link MuteUserApiRequest} builder object
     */
    public MuteUserApiRequest mute(long userId) {
        return new MuteUserApiRequest(this.client, userId);
    }

    /**
     * Updates aspects of the status for the user who invokes this endpoint.
     *
     * @see    https://zulip.com/api/update-status
     *
     * @return The {@link UpdateOwnUserStatusApiRequest} builder object
     */
    public UpdateOwnUserStatusApiRequest updateOwnUserStatus() {
        return new UpdateOwnUserStatusApiRequest(this.client);
    }

    /**
     * Updates settings for the user who invokes this endpoint.
     *
     * @see    https://zulip.com/api/update-settings
     *
     * @return The {@link UpdateOwnUserSettingsApiRequest} builder object
     */
    public UpdateOwnUserSettingsApiRequest updateOwnUserSettings() {
        return new UpdateOwnUserSettingsApiRequest(this.client);
    }

    /**
     * Unmute a user.
     *
     * @see           https://zulip.com/api/unmute-user
     *
     * @param  userId The id of the user to unmute
     * @return        The {@link UnmuteUserApiRequest} builder object
     */
    public UnmuteUserApiRequest unmute(long userId) {
        return new UnmuteUserApiRequest(this.client, userId);
    }

    /**
     * Get the subgroups of a user group.
     *
     * @see                https://zulip.com/api/get-user-group-subgroups
     *
     * @param  userGroupId The ID of the user group
     * @return             The {@link GetSubGroupsOfUserGroupApiRequest} builder object
     */
    public GetSubGroupsOfUserGroupApiRequest getSubGroupsOfUserGroup(long userGroupId) {
        return new GetSubGroupsOfUserGroupApiRequest(this.client, userGroupId);
    }

    /**
     * Updates user group sub groups.
     *
     * @see                https://zulip.com/api/update-user-group-subgroups
     *
     * @param  userGroupId The ID of the user group to update
     * @return             The {@link UpdateUserGroupSubGroupsApiRequest} builder object
     */
    public UpdateUserGroupSubGroupsApiRequest updateUserGroupSubGroups(long userGroupId) {
        return new UpdateUserGroupSubGroupsApiRequest(this.client, userGroupId);
    }

    /**
     * Adds user alert words.
     *
     * @see               https://zulip.com/api/add-alert-words
     *
     * @param  alertWords An array of strings, where each string is an alert word (or phrase)
     * @return            The {@link AddAlertWordsApiRequest} builder object
     */
    public AddAlertWordsApiRequest addAlertWords(String... alertWords) {
        return new AddAlertWordsApiRequest(this.client, alertWords);
    }

    /**
     * Gets all user alert words.
     *
     * @see    https://zulip.com/api/get-alert-words
     *
     * @return The {@link GetAllAlertWordsApiRequest} builder object
     */
    public GetAllAlertWordsApiRequest getAllAlertWords() {
        return new GetAllAlertWordsApiRequest(this.client);
    }

    /**
     * Removes user alert words.
     *
     * @see               https://zulip.com/api/remove-alert-words
     *
     * @param  alertWords An array of strings, where each string is an alert word (or phrase)
     * @return            The {@link RemoveAlertWordsApiRequest} builder object
     */
    public RemoveAlertWordsApiRequest removeAlertWords(String... alertWords) {
        return new RemoveAlertWordsApiRequest(this.client, alertWords);
    }

    /**
     * Gets a user status.
     *
     * @see           https://zulip.com/api/get-user-status
     *
     * @param  userId The ID of the user to fetch the status for
     * @return        The {@link GetUserStatusApiRequest} builder object
     */
    public GetUserStatusApiRequest getUserStatus(long userId) {
        return new GetUserStatusApiRequest(this.client, userId);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy