package com.mossle.security.impl;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.mossle.core.http.HttpHandler;
import com.mossle.core.http.HttpHandlerImpl;
import com.mossle.core.mapper.JsonMapper;
import com.mossle.security.api.UrlSourceFetcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HttpUrlSourceFetcher implements UrlSourceFetcher {
private static Logger logger = LoggerFactory
.getLogger(HttpUrlSourceFetcher.class);
private HttpHandler httpHandler = new HttpHandlerImpl();
private String url;
private String appId;
public Map<String, String> getSource(String type) {
Map<String, Object> parameterMap = new HashMap<String, Object>();
if (appId != null) {
parameterMap.put("appId", appId);
}
try {
String content = httpHandler.readText(url, parameterMap);
logger.info(content);
JsonMapper jsonMapper = new JsonMapper();
List<Map> list = jsonMapper.fromJson(content, List.class);
Map<String, String> resourceMap = new LinkedHashMap<String, String>();
for (Map map : list) {
String access = (String) map.get("access");
String permission = (String) map.get("permission");
if (resourceMap.containsKey(access)) {
String value = resourceMap.get(access);
resourceMap.put(access, value + "," + permission);
} else {
resourceMap.put(access, permission);
}
}
return resourceMap;
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
throw new IllegalStateException("error on fetch url source", ex);
}
}
public void setUrl(String url) {
this.url = url;
}
public void setAppId(String appId) {
this.appId = appId;
}
public void setHttpHandler(HttpHandler httpHandler) {
this.httpHandler = httpHandler;
}
}