Skip to content
AddPermissionCall.java 1.46 KiB
Newer Older
package it.inaf.ia2.gms.client.call;

import it.inaf.ia2.gms.client.model.Permission;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublisher;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse;

public class AddPermissionCall extends BaseGmsCall {

    public AddPermissionCall(HttpClientWrapper clientWrapper) {
        super(clientWrapper);
    }

    public boolean addPermission(String completeGroupName, String userId, Permission permission) {

        String endpoint = "permission";
        if (completeGroupName != null && !completeGroupName.isBlank()) {
            endpoint += "/" + completeGroupName;
        }

        BodyPublisher requestBody = BodyPublishers.ofString(
                "user_id=" + userId + "&permission=" + permission);

        HttpRequest groupsRequest = newHttpRequest(endpoint)
                .header("Accept", "text/plain")
                .header("Content-Type", "application/x-www-form-urlencoded")
                .POST(requestBody)
                .build();

        return getClient().sendAsync(groupsRequest, HttpResponse.BodyHandlers.ofInputStream())
                .thenApply(response -> {
                    if (response.statusCode() == 200) {
                        return true;
                    }
                    logServerErrorInputStream(groupsRequest, response);
                    throw new IllegalStateException("Unable to add permission");
                }).join();
    }
}