Skip to content
GmsClient.java 3.69 KiB
Newer Older
zonia3000's avatar
zonia3000 committed
package it.inaf.ia2.gms.client;

import it.inaf.ia2.gms.client.model.Group;
import it.inaf.ia2.gms.client.model.Member;
import it.inaf.ia2.gms.client.model.Permission;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;

public class GmsClient {

    private static final String WS = "ws";

    private final String baseUrl;
    private final RestTemplate restTemplate;

    public GmsClient(String baseUrl, String clientId, String clientSecret) {
        this.baseUrl = baseUrl;
        restTemplate = new RestTemplate();
    }

    public Group createGroup(List<String> names) {

        String url = UriComponentsBuilder.fromHttpUrl(baseUrl)
                .pathSegment(WS, "group")
                .toUriString();

        HttpEntity<List<String>> httpEntity = new HttpEntity<>(names);

        return restTemplate.exchange(url, HttpMethod.POST, httpEntity, Group.class).getBody();
    }

    public void deleteGroupByPath(List<String> names) {

        String url = UriComponentsBuilder.fromHttpUrl(baseUrl)
                .pathSegment(WS, "group")
                .queryParam("names", names)
                .toUriString();

        restTemplate.delete(url);
    }

    public Member addMember(List<String> names, String userId) {

        String url = UriComponentsBuilder.fromHttpUrl(baseUrl)
                .pathSegment(WS, "member")
                .toUriString();

        Map<String, Object> params = new HashMap<>();
        params.put("names", names);
        params.put("userId", userId);
        HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(params);

        return restTemplate.exchange(url, HttpMethod.POST, httpEntity, Member.class).getBody();
    }

    public void removeMember(List<String> names, String userId) {

        String url = UriComponentsBuilder.fromHttpUrl(baseUrl)
                .pathSegment(WS, "member")
                .queryParam("names", names)
                .queryParam("userId", userId)
                .toUriString();

        restTemplate.delete(url);
    }

    public Permission addPermission(List<String> names, String userId, String permission) {

        String url = UriComponentsBuilder.fromHttpUrl(baseUrl)
                .pathSegment(WS, "permission")
                .toUriString();

        Map<String, Object> params = new HashMap<>();
        params.put("names", names);
        params.put("userId", userId);
        params.put("permission", permission);
        HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(params);

        return restTemplate.exchange(url, HttpMethod.POST, httpEntity, Permission.class).getBody();
    }

    public void deletePermission(List<String> names, String userId, String permission) {

        String url = UriComponentsBuilder.fromHttpUrl(baseUrl)
                .pathSegment(WS, "permission")
                .queryParam("names", names)
                .queryParam("userId", userId)
                .queryParam("permission", permission)
                .toUriString();

        restTemplate.delete(url);
    }

    public void prepareToJoin(String fromUserId, String toUserId) {

        String url = UriComponentsBuilder.fromHttpUrl(baseUrl)
                .pathSegment(WS, "prepare-join")
                .toUriString();

        Map<String, Object> params = new HashMap<>();
        params.put("fromUserId", fromUserId);
        params.put("toUserId", toUserId);
        HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(params);

        restTemplate.exchange(url, HttpMethod.POST, httpEntity, Void.class);
    }
}