package com.qiyi.appstore.util;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.qiyi.appstore.exception.AppStoreException;
import com.qiyi.cloud.user.ApiCode;
public class XssUtils {
	private static final Logger logger=LoggerFactory.getLogger(XssUtils.class);
	
	public static String getSafeStringXSS(String s){
	       if (StringUtils.isBlank(s)) {  
	           return s;  
	       }  
	       StringBuilder sb = new StringBuilder(s.length() + 16);  
	       for (int i = 0; i < s.length(); i++) {  
	           char c = s.charAt(i);  
	           switch (c) {  
	           case '<':  
	               sb.append("<");  
	               break; 
	           case '>':  
	               sb.append(">");  
	               break;  
	           case '\'':  
	               sb.append("′");// ´");  
	               break;  
	           case '′':  
	               sb.append("′");// ´");  
	               break;  
	           case '\"':  
	               sb.append(""");  
	               break;  
	           case '"':  
	               sb.append(""");  
	               break;  
	           case '&':  
	               sb.append("&");  
	               break;  
	           case '#':  
	               sb.append("#");  
	               break;  
	           case '\\':  
	               sb.append('¥');  
	               break; 
	           case '=':  
	               sb.append("=");  
	               break;
	           default:  
	               sb.append(c);  
	               break;  
	           }  
	       }  
	       return sb.toString(); 
	   }
	
	public static <T> void getXssSaftBean(Class<?> clz,T bean) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{
		String classname = clz.getSimpleName();
		logger.info("map target class name is {} .",classname);
		Field[] fields = clz.getDeclaredFields();
		for(Field field : fields){
		
			Class<?> type = field.getType();
			if(type.equals(String.class)){
				String fieldname = field.getName();
				String value = BeanUtils.getProperty(bean, fieldname);
				if(StringUtils.isNotBlank(value)){
					BeanUtils.setProperty(bean, fieldname, getSafeStringXSS(value));
				}
			}
			
		}
	}
}