Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions src/main/java/io/getstream/chat/java/models/ExportUsers.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package io.getstream.chat.java.models;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.getstream.chat.java.models.framework.StreamRequest;
import io.getstream.chat.java.models.framework.StreamResponseObject;
import io.getstream.chat.java.services.ExportUsersService;
import io.getstream.chat.java.services.framework.Client;
import java.util.List;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.jetbrains.annotations.NotNull;
import retrofit2.Call;

@Data
@NoArgsConstructor
public class ExportUsers {

@Builder(
builderClassName = "ExportUsersRequest",
builderMethodName = "",
buildMethodName = "internalBuild")
public static class ExportUsersRequestData {
@JsonProperty("user_ids")
private List<String> userIds;

public static class ExportUsersRequest extends StreamRequest<ExportUsers.ExportUsersResponse> {
@Override
protected Call<ExportUsers.ExportUsersResponse> generateCall(Client client) {
return client.create(ExportUsersService.class).exportUsers(this.internalBuild());
}
}
}

@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public static class ExportUsersResponse extends StreamResponseObject {
@NotNull
@JsonProperty("task_id")
private String taskId;
}

/**
* Creates a export users request
*
* @param userIds list of user IDs to be exported
* @return the created request
*/
@NotNull
public static ExportUsers.ExportUsersRequestData.ExportUsersRequest exportUsers(
@NotNull List<String> userIds) {
return new ExportUsers.ExportUsersRequestData.ExportUsersRequest().userIds(userIds);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package io.getstream.chat.java.services;

import io.getstream.chat.java.models.ExportUsers;
import org.jetbrains.annotations.NotNull;
import retrofit2.Call;
import retrofit2.http.*;

public interface ExportUsersService {
@POST("export/users")
Call<ExportUsers.ExportUsersResponse> exportUsers(
@NotNull @Body ExportUsers.ExportUsersRequestData exportUsersRequest);
}
1 change: 1 addition & 0 deletions src/test/java/io/getstream/chat/java/BasicTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ private static void createTestChannel() throws StreamException {
}

static void upsertUsers() throws StreamException {
testUsersRequestObjects.clear();
testUserRequestObject =
UserRequestObject.builder()
.id(RandomStringUtils.randomAlphabetic(10))
Expand Down
37 changes: 37 additions & 0 deletions src/test/java/io/getstream/chat/java/ExportUsersTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package io.getstream.chat.java;

import io.getstream.chat.java.models.*;
import java.util.List;
import org.apache.commons.lang3.RandomStringUtils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

public class ExportUsersTest extends BasicTest {
@DisplayName("Export users")
@Test
void exportUsersTest() {
var userId = RandomStringUtils.randomAlphabetic(10);
Assertions.assertDoesNotThrow(
() -> User.upsert().user(User.UserRequestObject.builder().id(userId).build()).request());

var userIds = List.of(userId);
var exportUsersResponse =
Assertions.assertDoesNotThrow(() -> ExportUsers.exportUsers(userIds).request());
Assertions.assertNotEquals("", exportUsersResponse.getTaskId());

var taskId = exportUsersResponse.getTaskId();

var taskCompleted = false;
for (int i = 0; i < 10; i++) {
var taskStatus =
Assertions.assertDoesNotThrow(() -> TaskStatus.get(taskId).request()).getStatus();
if (taskStatus.equals("completed")) {
taskCompleted = true;
break;
}
Assertions.assertDoesNotThrow(() -> Thread.sleep(500));
}
Assertions.assertTrue(taskCompleted);
}
}
Loading