package edu.fudan.weixin.model.message;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import java.util.Random;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import edu.fudan.eservice.common.utils.Config;
public class StaticMessageBuilder {
public static NewsJSONMessageBuilder authBuilder()
{
NewsJSONMessageBuilder ret=new NewsJSONMessageBuilder();
buildAuthMessage(ret);
return ret;
}
public static Map<String,Object> buildXMLAuthMessage()
{
return buildAuthMessage(new NewsXMLMessageBuilder());
}
public static Map<String,Object> buildJSONAuthMessage()
{
return buildAuthMessage(new NewsJSONMessageBuilder());
}
public static Map<String,Object> buildAuthMessage(NewsMessageBuilder builder)
{
Config conf=Config.getInstance();
long st=new Random().nextLong();
//放进一个使用EhCache维护的容器,当用户从微信的OAuth2.0拿到code后检查这个链接是不是由此链接生成的。
CacheManager.getInstance().getCache("WXStates").put(new Element(String.valueOf(st),st));
builder.addArticle("UIS账号绑定", "通过OAuth2.0接口将您的微信账号与复旦大学UIS账号进行绑定,以获取个性化信息服务。\n请点击查看全文并在打开的页面中输入学/工号和UIS口令,并完成授权操作。",
conf.get("weixin.context")+"bindin.act",
conf.get("weixin.context")+"images/uis.gif");
builder.setContent(null);
return builder.getMessage();
}
public static Map<String,Object> buildXMLScopeMessage(String scope)
{
return buildScopeMessage(new NewsXMLMessageBuilder(),scope);
}
public static Map<String,Object> buildJSONScopeMessage(String scope)
{
return buildScopeMessage(new NewsJSONMessageBuilder(),scope);
}
public static String buildScopeUrl()
{
Config conf=Config.getInstance();
try {
return "https://tac.fudan.edu.cn/oauth2/auth_input.act?client.id="+conf.get("tac.clientid")+"&scope="+URLEncoder.encode(conf.get("tac.scope"),"utf-8");
} catch (UnsupportedEncodingException e) {
return "https://tac.fudan.edu.cn/oauth2/auth_input.act?client.id="+conf.get("tac.clientid");
}
}
public static Map<String,Object> buildScopeMessage(NewsMessageBuilder builder,String scope)
{
builder.addArticle("需要增加授权", "您要访问的信息需要向复旦信息办微信公众号授权获取您的"+(scope==null?"更多":scope)+"权限。\n请点击查看全文并完成所需权限的授权。",
buildScopeUrl(),
"");
builder.setContent(null);
return builder.getMessage();
}
}