package br.com.dextra.dextranet.grupo.servico.google;
import gapi.GoogleAPI;
import java.io.IOException;
import java.net.URISyntaxException;
import java.security.GeneralSecurityException;
import java.util.List;
import br.com.dextra.dextranet.seguranca.AutenticacaoService;
import br.com.dextra.dextranet.usuario.Usuario;
import br.com.dextra.dextranet.utils.EmailUtil;
import com.google.api.services.admin.directory.model.Group;
import com.google.api.services.admin.directory.model.Member;
public class Aprovisionamento {
private GoogleAPI googleAPI = new GoogleAPI();
public Group criarGrupo(String nome, String emailgrupo, String descricao) throws IOException, GeneralSecurityException, URISyntaxException {
Group grupo = new Group();
grupo.setName(nome);
grupo.setEmail(emailgrupo);
grupo.setDescription(descricao);
return googleAPI.directory().create(grupo);
}
public void adicionarMembros(List<String> emailMembros, Group group) throws IOException, GeneralSecurityException, URISyntaxException {
for (String email : emailMembros) {
Member membro = new Member();
membro.setEmail(validarEmail(email));
googleAPI.directory().addMemberGroup(group, membro);
}
}
public void removerMembros(List<String> emailMembros, Group group) throws IOException, GeneralSecurityException, URISyntaxException {
for (String email : emailMembros) {
googleAPI.directory().deleteMemberGroup(group, validarEmail(email));
}
}
public void removerGrupo(String emailGrupo) throws IOException,
GeneralSecurityException, URISyntaxException {
googleAPI.directory().delete(emailGrupo);
}
public Group obterGrupo(String emailGrupo) throws IOException,
GeneralSecurityException, URISyntaxException {
return googleAPI.directory().getGroup(emailGrupo);
}
public List<Group> obterGrupos(String dominio) {
return googleAPI.directory().getGroupsByDomain(dominio).getGroups();
}
public List<Member> obterMembros(Group grupo) {
return googleAPI.directory().getMembersGroup(grupo).getMembers();
}
protected String obtemUsuarioLogado() {
return AutenticacaoService.identificacaoDoUsuarioLogado();
}
private String validarEmail(String email) {
if (EmailUtil.isValid(email)) {
return email;
} else if (EmailUtil.isValid(email + Usuario.DEFAULT_DOMAIN)) {
return email + Usuario.DEFAULT_DOMAIN;
} else {
throw new RuntimeException(String.format("%s is not a valid email address.", email));
}
}
}