package com.cnblogs.android.core; import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import com.cnblogs.android.entity.Users; import com.cnblogs.android.parser.UserDetailXmlParser; import com.cnblogs.android.parser.UserListXmlParser; import com.cnblogs.android.utility.NetHelper; public class UserHelper { /** * ����User���� * * @param userName * @return */ public static Users GetUserDetail(String userName) { String url = Config.URL_GET_BLOG_LIST_BY_AUTHOR .replace("{author}", userName).replace("{pageIndex}", "1") .replace("{pageSize}", "1"); String dataString = NetHelper.GetContentFromUrl(url); Users entity = ParseDetailString(dataString); return entity; } /** * ���ݹؼ��ַ���User���󼯺� * * @return q:�ؼ��� */ public static ArrayList<Users> GetUserList(String q) { String url = Config.URL_USER_SEARCH_AUTHOR_LIST .replace("{username}", q);// ���ݵ�ַ String dataString = NetHelper.GetContentFromUrl(url); ArrayList<Users> list = ParseString(dataString); return list; } /** * ���ز������а��û� * @param pageIndex * @return */ public static List<Users> GetTopUserList(int pageIndex){ String url=Config.URL_RECOMMEND_USER_LIST.replace("{pageIndex}",String.valueOf(pageIndex)) .replace("{pageSize}",String.valueOf(Config.NUM_RECOMMEND_USER)); String dataString = NetHelper.GetContentFromUrl(url); ArrayList<Users> list = ParseString(dataString); return list; } /** * ���ַ���ת��ΪUser���� * * @return */ private static ArrayList<Users> ParseString(String dataString) { SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); ArrayList<Users> listUser = new ArrayList<Users>(); try { XMLReader xmlReader = saxParserFactory.newSAXParser() .getXMLReader(); UserListXmlParser handler = new UserListXmlParser(listUser); xmlReader.setContentHandler(handler); xmlReader.parse(new InputSource(new StringReader(dataString))); listUser = handler.GetUserList(); } catch (SAXException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return listUser; } /** * ���ַ���ת��ΪUser * * @return */ private static Users ParseDetailString(String dataString) { SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); Users entity = new Users(); try { XMLReader xmlReader = saxParserFactory.newSAXParser() .getXMLReader(); UserDetailXmlParser handler = new UserDetailXmlParser(entity); xmlReader.setContentHandler(handler); xmlReader.parse(new InputSource(new StringReader(dataString))); entity = handler.GetUserDetail(); } catch (SAXException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return entity; } /** * �Ӳ��͵�ַ����ȡ����·���� �磺http://www.cnblogs.com/walkingp ����walkingp * * @param url * @return */ private static Pattern patternUrl = Pattern.compile("http://(.+?)/(.+?)/"); public static String GetBlogUrlName(String url) { Matcher m = patternUrl.matcher(url); while (m.find()) { String userName = m.group(2); return userName; } return ""; } /** * ��Homeҳ��ַ����ȡ�û��� �磺http://home.cnblogs.com/u/A_ming/ ����A_ming */ private static Pattern patternHomeUrl = Pattern.compile("http://www.cnblogs.com/(.+?)/"); //patternHomeUrl = Pattern.compile("http://home.cnblogs.com/u/(.+?)/"); public static String GetHomeUrlName(String url) { Matcher m = patternHomeUrl.matcher(url); while (m.find()) { String userName = m.group(1); return userName; } return ""; } /** * ȡ�ô�ͷ�� 48*48 -> 154*154 * * @param avatarUrl * @return */ public static String GetLargeAvatar(String avatarUrl) { return avatarUrl.replace("face", "avatar").replace("u", "a"); } }