package com.mossle.internal.whitelist.support;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import com.mossle.api.whitelist.WhitelistConnector;
import com.mossle.api.whitelist.WhitelistDTO;
import com.mossle.core.http.HttpHandler;
import com.mossle.core.http.HttpHandlerImpl;
import com.mossle.core.mapper.JsonMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
// http://localhost/rs/whitelist/get?code=CAS
public class HttpWhitelistConnector implements WhitelistConnector {
private static Logger logger = LoggerFactory
.getLogger(HttpWhitelistConnector.class);
private JsonMapper jsonMapper = new JsonMapper();
private HttpHandler httpHandler = new HttpHandlerImpl();
private String baseUrl;
public WhitelistDTO getWhitelist(String code, String tenantId) {
WhitelistDTO result = new WhitelistDTO();
List<WhitelistDTO> whitelistDtos = this.getWhitelists(code, tenantId);
for (WhitelistDTO whitelistDto : whitelistDtos) {
result.getHosts().addAll(whitelistDto.getHosts());
result.getIps().addAll(whitelistDto.getIps());
}
return result;
}
public List<WhitelistDTO> getWhitelists(String code, String tenantId) {
try {
String text = httpHandler.readText(baseUrl + "?code=" + code
+ "&tenantId=" + tenantId);
Map<String, Object> result = jsonMapper.fromJson(text, Map.class);
logger.debug("result : {}", result);
List<Map> list = (List<Map>) result.get("data");
if (list == null) {
return Collections.emptyList();
}
List<WhitelistDTO> whitelistDtos = new ArrayList<WhitelistDTO>();
for (Map map : list) {
WhitelistDTO whitelistDto = new WhitelistDTO();
whitelistDtos.add(whitelistDto);
whitelistDto.setName((String) map.get("name"));
whitelistDto.setDescription((String) map.get("description"));
whitelistDto.setHosts((List<String>) map.get("host"));
whitelistDto.setIps((List<String>) map.get("ip"));
}
return whitelistDtos;
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
return Collections.emptyList();
}
}
public void setBaseUrl(String baseUrl) {
this.baseUrl = baseUrl;
}
}