Есть ли способ массового удаления всех разрешений файла с помощью IGraphServiceClient? - PullRequest
1 голос
/ 22 января 2020

Как часть действия пользователя, мы используем MS Graph Java SDK, чтобы сначала перечислить все разрешения файла, а затем перебрать список разрешений, чтобы удалить каждое из них по отдельности. Это, похоже, имеет некоторые проблемы с производительностью. Нам было интересно, есть ли способ пакетировать вызовы с помощью IGraphServiceClient.

Используемые соответствующие API:

1 Ответ

0 голосов
/ 25 января 2020

Вы можете сделать пакетных запросов .

1. Создание шагов запроса MSBatch (примеры ниже)

Request requestGetMe = new Request.Builder().url("https://graph.microsoft.com/v1.0/me/").build();
List<String> arrayOfDependsOnIdsGetMe = null;
MSBatchRequestStep stepGetMe = new MSBatchRequestStep("1", requestGetMe, arrayOfDependsOnIdsGetMe);
Request requestGetMePlannerTasks = new Request.Builder().url("https://graph.microsoft.com/v1.0/me/planner/tasks").build();
List<String> arrayOfDependsOnIdsGetMePlannerTasks = Arrays.asList("1");
MSBatchRequestStep stepMePlannerTasks = new MSBatchRequestStep("2", requestGetMePlannerTasks, arrayOfDependsOnIdsGetMePlannerTasks);
String body = "{" + 
        "\"displayName\": \"My Notebook\"" + 
        "}";
RequestBody postBody = RequestBody.create(MediaType.parse("application/json"), body);
Request requestCreateNotebook = new Request
    .Builder()
        .addHeader("Content-Type", "application/json")
    .url("https://graph.microsoft.com/v1.0/me/onenote/notebooks")
    .post(postBody)
    .build();
MSBatchRequestStep stepCreateNotebook = new MSBatchRequestStep("3", requestCreateNotebook, Arrays.asList("2"));

2. Создайте содержимое MSBatch Request и получите содержимое

List<MSBatchRequestStep> steps = Arrays.asList(stepGetMe, stepMePlannerTasks, stepCreateNotebook);
MSBatchRequestContent requestContent = new MSBatchRequestContent(steps);
String content = requestContent.getBatchRequestContent();

3. Сделайте вызов к конечной точке $ batch

OkHttpClient client = HttpClients.createDefault(auth);
Request batchRequest = new Request
    .Builder()
    .url("https://graph.microsoft.com/v1.0/$batch")
    .post(RequestBody.create(MediaType.parse("application/json"), content))
    .build();
Response batchResponse = client.newCall(batchRequest).execute();

4. Создание содержимого ответа MSBatch

MSBatchResponseContent responseContent = new MSBatchResponseContent(batchResponse);
Response responseGetMe = responseContent.getResponseById("1");
// Use the response of each request
...