package org.nutz.el.opt.custom; import java.util.List; import org.nutz.el.opt.RunMethod; import org.nutz.lang.Encoding; import org.nutz.plugin.Plugin; import org.nutz.repo.Base64; /** * 用法 ${base64('abc')} ${base64('decode', 'sfasdfsadfsa')} 若传入参数为null,则返回null * @author wendal(wendal1985@gmail.com) * */ public class DoBase64 implements RunMethod, Plugin { public boolean canWork() { return true; } public Object run(List<Object> fetchParam) { if (fetchParam.isEmpty()) return null; if (fetchParam.size() == 1) { return encode(fetchParam.get(0)); } Object obj = fetchParam.get(1); if (obj == null) return null; if ("decode".equals(fetchParam.get(0))) { return new String(Base64.decode(String.valueOf(obj).getBytes(Encoding.CHARSET_UTF8)), Encoding.CHARSET_UTF8); } else { return encode(obj); } } public String encode(Object obj) { if (obj == null) return null; return Base64.encodeToString(String.valueOf(obj).getBytes(Encoding.CHARSET_UTF8), false); } public String fetchSelf() { return "base64"; } }