📄 bloggerapihandler.java
字号:
package org.roller.presentation.xmlrpc;import org.apache.commons.lang.StringUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.xmlrpc.XmlRpcException;import org.roller.RollerException;import org.roller.model.Roller;import org.roller.model.UserManager;import org.roller.model.WeblogManager;import org.roller.pojos.PageData;import org.roller.pojos.UserData;import org.roller.pojos.WeblogEntryData;import org.roller.pojos.WebsiteData;import org.roller.presentation.RollerContext;import org.roller.presentation.RollerRequest;import java.sql.Timestamp;import java.util.ArrayList;import java.util.Date;import java.util.Hashtable;import java.util.Iterator;import java.util.Map;import java.util.StringTokenizer;import java.util.Vector;import javax.servlet.http.HttpServletRequest;/** * Roller XML-RPC Handler for the Blogger v1 API. * * Blogger API spec can be found at http://plant.blogger.com/api/index.html * See also http://xmlrpc.free-conversant.com/docs/bloggerAPI * * @author David M Johnson */public class BloggerAPIHandler extends BaseAPIHandler{ static final long serialVersionUID = 2398898776655115019L; private static Log mLogger = LogFactory.getFactory().getInstance(RollerXMLRPCServlet.class); public BloggerAPIHandler() { super(); } //------------------------------------------------------------------------ /** * Delete a Post * * @param appkey Unique identifier/passcode of the application sending the post * @param postid Unique identifier of the post to be changed * @param userid Login for a Blogger user who has permission to post to the blog * @param password Password for said username * @param publish Ignored * @throws XmlRpcException * @return */ public boolean deletePost(String appkey, String postid, String userid, String password, boolean publish) throws Exception { mLogger.info("deletePost() Called =====[ SUPPORTED ]====="); mLogger.info(" Appkey: " + appkey); mLogger.info(" PostId: " + postid); mLogger.info(" UserId: " + userid); validate(userid,password); Roller roller = RollerRequest.getRollerRequest().getRoller(); WeblogManager weblogMgr = roller.getWeblogManager(); try { WeblogEntryData entry = weblogMgr.retrieveWeblogEntry(postid); entry.remove(); roller.commit(); flushPageCache(userid); } catch (Exception e) { String msg = "ERROR in blogger.deletePost: "+e.getClass().getName(); mLogger.error(msg,e); e.printStackTrace(); throw new XmlRpcException(UNKNOWN_EXCEPTION, msg); } return true; } //------------------------------------------------------------------------ /** * Edits the main index template of a given blog. Roller only support * updating the main template, the default template of your weblog. * * @param appkey Unique identifier/passcode of the application sending the post * @param blogid Unique identifier of the blog the post will be added to * @param userid Login for a Blogger user who has permission to post to the blog * @param password Password for said username * @param template The text for the new template (usually mostly HTML). * @param templateType Determines which of the blog's templates is to be set. * @throws XmlRpcException * @return */ public boolean setTemplate(String appkey, String blogid, String userid, String password, String templateData, String templateType) throws Exception { mLogger.info("setTemplate() Called =====[ SUPPORTED ]====="); mLogger.info(" Appkey: " + appkey); mLogger.info(" BlogId: " + blogid); mLogger.info(" UserId: " + userid); mLogger.info(" Template: " + templateData); mLogger.info(" Type: " + templateType); validate(userid,password); if (! templateType.equals("main")) { throw new XmlRpcException( UNKNOWN_EXCEPTION, "Roller only supports main template"); } try { Roller roller = RollerRequest.getRollerRequest().getRoller(); UserManager userMgr = roller.getUserManager(); PageData page = userMgr.retrievePage(templateType); page.setTemplate(templateData); userMgr.storePage(page); flushPageCache(userid); return true; } catch (RollerException e) { String msg = "ERROR in BlooggerAPIHander.setTemplate"; mLogger.error(msg,e); throw new XmlRpcException(UNKNOWN_EXCEPTION,msg); } } //------------------------------------------------------------------------ /** * Returns the main or archive index template of a given blog * * @param appkey Unique identifier/passcode of the application sending the post * @param blogid Unique identifier of the blog the post will be added to * @param userid Login for a Blogger user who has permission to post to the blog * @param password Password for said username * @param templateType Determines which of the blog's templates will be returned. Currently, either "main" or "archiveIndex" * @throws XmlRpcException * @return */ public String getTemplate(String appkey, String blogid, String userid, String password, String templateType) throws Exception { mLogger.info("getTemplate() Called =====[ SUPPORTED ]====="); mLogger.info(" Appkey: " + appkey); mLogger.info(" BlogId: " + blogid); mLogger.info(" UserId: " + userid); mLogger.info(" Type: " + templateType); validate(userid,password); try { Roller roller = RollerRequest.getRollerRequest().getRoller(); UserManager userMgr = roller.getUserManager(); PageData page = userMgr.retrievePage(templateType); if ( null == page ) { throw new XmlRpcException(UNKNOWN_EXCEPTION,"Template not found"); } else { return page.getTemplate(); } } catch (Exception e) { String msg = "ERROR in BlooggerAPIHander.getTemplate"; mLogger.error(msg,e); throw new XmlRpcException(UNKNOWN_EXCEPTION,msg); } } //------------------------------------------------------------------------ /** * Authenticates a user and returns basic user info (name, email, userid, etc.) * * @param appkey Unique identifier/passcode of the application sending the post * @param userid Login for a Blogger user who has permission to post to the blog * @param password Password for said username * @throws XmlRpcException * @return */ public Object getUserInfo(String appkey, String userid, String password) throws Exception { mLogger.info("getUserInfo() Called =====[ SUPPORTED ]====="); mLogger.info(" Appkey: " + appkey); mLogger.info(" UserId: " + userid); validate(userid,password); try { Roller roller = RollerRequest.getRollerRequest().getRoller(); UserManager userMgr = roller.getUserManager(); UserData user = userMgr.getUser(userid); // parses full name into two strings, firstname and lastname String firstname = "", lastname = ""; StringTokenizer toker = new StringTokenizer(user.getFullName()); if (toker.hasMoreTokens()) { firstname = toker.nextToken(); } while (toker.hasMoreTokens()) { if ( !lastname.equals("") ) { lastname += " "; } lastname += toker.nextToken(); } RollerRequest rreq = RollerRequest.getRollerRequest(); HttpServletRequest req = rreq.getRequest(); String contextUrl = RollerContext.getRollerContext(req).getAbsoluteContextUrl(req); // populates user information to return as a result Hashtable result = new Hashtable(); result.put("nickname", user.getUserName()); result.put("userid", user.getUserName()); result.put("url", contextUrl+"/page/"+userid); result.put("email", ""); result.put("lastname", lastname); result.put("firstname", firstname);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -