/** * */ package com.googlecode.flickr2twitter.impl.ebay; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; /** * @author hochen * */ public class GetUserProfileDAO { String EBAY_SANDBOX_SHOPPING_API_SERVER = "open.api.sandbox.ebay.com"; String EBAY_SANDBOX_SHOPPING_API_PATH = "/shopping"; String EBAY_SHOPPING_API_SERVER = "open.api.ebay.com"; String EBAY_SHOPPING_API_PATH = "/shopping"; private static final String EBAY_APPID_PRODUCTION = "eBay929a8-96bf-4ad8-a71c-94de77a7c9e"; private static final String EBAY_APPID_SANDBOX = "eBayb1609-29f8-4684-aadb-6ba5a05a182"; public EbayUser getUserProfile( boolean isSandbox, String userId ) throws IOException, SAXException { return getUserProfile(isSandbox, isSandbox ? EBAY_APPID_SANDBOX : EBAY_APPID_PRODUCTION, userId); } public EbayUser getUserProfile( boolean isSandbox, String appId, String userId ) throws IOException, SAXException { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("callname", "GetUserProfile"); parameters.put("responseencoding", "XML"); parameters.put("appid", appId); parameters.put("siteid", "0"); parameters.put("UserID", userId); parameters.put("IncludeSelector", "Details"); parameters.put("version", "707"); URL url = null; if (isSandbox) { url = URLHelper.buildUrl(false, EBAY_SANDBOX_SHOPPING_API_SERVER, -1, EBAY_SANDBOX_SHOPPING_API_PATH, parameters); } else { url = URLHelper.buildUrl(false, EBAY_SHOPPING_API_SERVER, -1, EBAY_SHOPPING_API_PATH, parameters); } System.out.println(url); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.connect(); InputStream in = null; Document document = null; try { in = conn.getInputStream(); DocumentBuilderFactory builderFactory = DocumentBuilderFactory .newInstance(); DocumentBuilder builder = builderFactory.newDocumentBuilder(); document = builder.parse(in); } catch (ParserConfigurationException e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { } } } if (document == null) { return null; } NodeList nodeList = document.getElementsByTagName("User"); EbayUser user = null; if (nodeList != null && nodeList.getLength() > 0) { user = new EbayUser(); Node userNode = nodeList.item(0); NodeList userFirstLevelNodes = userNode.getChildNodes(); generateUser(userFirstLevelNodes, user); } return user; } private void generateUser(NodeList userFirstLevelNodes, EbayUser user) { if (userFirstLevelNodes == null || user == null) { return; } for (int k = 0; k < userFirstLevelNodes.getLength(); k++) { Node userFirstLevelNode = userFirstLevelNodes.item(k); if (userFirstLevelNode != null) { String nodeName = userFirstLevelNode.getNodeName(); String nodeValue = getNodeValue(userFirstLevelNode); if (nodeName != null) { if ("UserID".equals(nodeName)) { user.setUserId(nodeValue); } else if ("FeedbackRatingStar".equals(nodeName)) { user.setFeedbackRatingStar(nodeValue); } else if ("FeedbackScore".equals(nodeName)) { user.setFeedbackScore(nodeValue); } else if ("RegistrationDate".equals(nodeName)) { user.setRegistrationDate(nodeValue); } else if ("Status".equals(nodeName)) { user.setStatus(nodeValue); } else if ("StoreURL".equals(nodeName)) { user.setStoreURL(nodeValue); } else if ("StoreName".equals(nodeName)) { user.setStoreName(nodeValue); } else if ("SellerItemsURL".equals(nodeName)) { user.setSellerItemsURL(nodeValue); } else if ("AboutMeURL".equals(nodeName)) { user.setAboutMeURL(nodeValue); } else if ("MyWorldURL".equals(nodeName)) { user.setMyWorldURL(nodeValue); } else if ("ReviewsAndGuidesURL".equals(nodeName)) { user.setReviewsAndGuidesURL(nodeValue); } else if ("PositiveFeedbackPercent".equals(nodeName)) { user.setPositiveFeedbackPercent(nodeValue); } else if ("TopRatedSeller".equals(nodeName)) { user.setTopRatedSeller(nodeValue); } } } } } private String getNodeValue(Node node) { if (node == null || node.getFirstChild() == null) { return null; } return node.getFirstChild().getNodeValue(); } public static void main(String args[]) throws Exception { GetUserProfileDAO getUserProfileDAO = new GetUserProfileDAO(); // production //System.out.println(getUserProfileDAO.getUserProfile(false, "nemo.chen")); // sandbox System.out.println(getUserProfileDAO.getUserProfile(true, "TESTUSER_socialhub")); } }