/** * */ package com.googlecode.flickr2twitter.impl.ebay; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TimeZone; 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 GetSellerListDAO { private static final String GET_SELLER_LIST_REQUEST = "<?xml version=\"1.0\" encoding=\"utf-8\"?> \n" + "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" + " <soapenv:Header>\n" + " <RequesterCredentials soapenv:mustUnderstand=\"0\" xmlns=\"urn:ebay:apis:eBLBaseComponents\">\n" + // " <ebl:Credentials xmlns:ebl=\"urn:ebay:apis:eBLBaseComponents\">\n" + // " <ebl:DevId>%s</ebl:DevId>\n" + // " <ebl:AppId>%s</ebl:AppId>\n" + // " <ebl:AuthCert>%s</ebl:AuthCert>\n" + // " <ebl:Username>%s</ebl:Username>\n" + // " <ebl:Password>%s</ebl:Password>\n" + // " </ebl:Credentials>\n" + " <ebl:eBayAuthToken xmlns:ebl=\"urn:ebay:apis:eBLBaseComponents\">%s</ebl:eBayAuthToken>\n" + " </RequesterCredentials>\n" + " </soapenv:Header>\n" + " <soapenv:Body>\n" + " <GetSellerListRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">\n" + " <DetailLevel>ReturnAll</DetailLevel>\n" + " <Version>711</Version>\n" + " <UserID>%s</UserID>\n" + " <StartTimeFrom>%s</StartTimeFrom>\n" + " <StartTimeTo>%s</StartTimeTo>\n" + " <Pagination>\n" + " <EntriesPerPage>%s</EntriesPerPage>\n" + " </Pagination>\n" + " </GetSellerListRequest>\n" + " </soapenv:Body>\n" + "</soapenv:Envelope>\n"; String EBAY_SANDBOX_API_SERVER = "api.sandbox.ebay.com"; String EBAY_SANDBOX_API_PATH = "/wsapi"; String EBAY_API_SERVER = "api.ebay.com"; String EBAY_API_PATH = "/wsapi"; String msg1 = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + "<soapenv:Header>" + "<RequesterCredentials soapenv:mustUnderstand=\"0\" xmlns=\"urn:ebay:apis:eBLBaseComponents\">" + " <ebl:eBayAuthToken xmlns:ebl=\"urn:ebay:apis:eBLBaseComponents\">AgAAAA**AQAAAA**aAAAAA**VyBeTQ**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wJnY+iAZeEqQ2dj6x9nY+seQ**rS0BAA**AAMAAA**aoGraHo8YuNvBclGXrIgdnxGZm7y5Hvm45WprtR0mG0ViRWk7xjw6P6rYtmUCUHP/4T+dYgt4jugQp8ZGzMpyYwd8H0Srf9dDS7lwMhwMkBL4RZ0UFvcbYCR1ukgXWlXWQ3PtGdjnBCAjacHlrGiwJr/XdlaBET/yNwyQpi3Qt0NMRhT0XAXjgaV+Me9SfvJ3oTY6U4vXj7Ui1K7OpUxPBPsg3RQ+PI055EttgYMe2Gw1z0RxxxETzruKX30g2KzvAx+SRF5jtoDECvl0eMJMN+pC8VOSLwQ8UBTsdds3GH+w+iS47fV0l3pvGOFlH/iJ0uIxM0cHGVctqUT246JBBp3Va1BDU3L9P78frLBzkReB8NHza020geqMf2oklt6mFb7gepfqVNvJEAF/SyRUC2CbuV1gYKXf2AAALazne6MNYP4H5EHb44eq3ncQx7P9QXkLOXQO+CT5AxxdrCwFfPh9E6ybqK1k4+vyBzKJEebLTZ1Q9cJBZy6iZ/hMO0YW3k2tcZOXwlI6E8xrQhW0nzrzv32a9uALTSFP+nS9ozFMEkR10HiDEZQlcba+Nm2T+8kJ2fFkzW5Tm741rIvrDkmSHP0I9nOqeUblrxv9lNMF+DFQyJShZEPd3Pn/NphDohhjcmdYEOFnnd2j6Xs2ojoS7BKplISME6we/eebk/W+7Xe1RJarStmJusrKcneYmTVlpK072bVaQcTdkSI4y10QcjbEG1ZVyaDm77b6XuEmDb8pHdXyQoStDNR30+J</ebl:eBayAuthToken>" + "</RequesterCredentials>" +" </soapenv:Header>" +" <soapenv:Body>" + " <GetSellerListRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">" + " <DetailLevel>ReturnAll</DetailLevel>" + " <Version>711</Version>" + " <UserID>eforcity</UserID>" + " <StartTimeFrom>2011-02-18 17:14:01</StartTimeFrom>" + " <StartTimeTo>2011-02-19 17:14:01</StartTimeTo>" + " <Pagination>" + " <EntriesPerPage>2</EntriesPerPage>" + " </Pagination>" + " </GetSellerListRequest>" + "</soapenv:Body>" + "</soapenv:Envelope>"; public List<EbayItem> getSellerList( boolean isSandbox, String appId, String token, String userId, Date StartTimeFrom, Date StartTimeTo, int entriesPerPage ) throws IOException, SAXException { Map<String, String> parameters = new HashMap<String, String>(); parameters.put("siteid", "0"); parameters.put("callname", "GetSellerList"); parameters.put("appid", appId); parameters.put("client", "Nemo"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); URL url = null; if (isSandbox) { url = URLHelper.buildUrl(true, EBAY_SANDBOX_API_SERVER, -1, EBAY_API_PATH, parameters); } else { url = URLHelper.buildUrl(true, EBAY_API_SERVER, -1, EBAY_API_PATH, parameters); } String requestXml = String.format(GET_SELLER_LIST_REQUEST, token, userId, sdf.format(StartTimeFrom), sdf.format(StartTimeTo), String.valueOf(entriesPerPage) ); System.out.println(url); System.out.println(requestXml); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("SOAPAction", ""); conn.setRequestProperty("Content-Type", "text/xml"); conn.setDoInput(true); conn.setDoOutput(true); conn.setRequestMethod("POST"); DataOutputStream out = new DataOutputStream( conn.getOutputStream()); out.writeBytes(requestXml); out.flush (); out.close(); conn.connect(); InputStream in = null; Document document = null; try { System.out.println(conn.getResponseCode()); if (conn.getResponseCode() >= 400) { in = conn.getErrorStream(); System.out.println(getInputStream(in)); } else { 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("Item"); List<EbayItem> lstItem = new ArrayList<EbayItem>(); if (nodeList != null) { for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); NodeList itemRootNode = node.getChildNodes(); EbayItem item = new EbayItem(userId); lstItem.add(item); generateItem(itemRootNode, item); } } return lstItem; } private void generateItem(NodeList itemNode, EbayItem item) { if (itemNode == null || item == null) { return; } for (int k = 0; k < itemNode.getLength(); k++) { Node firstLevelNode = itemNode.item(k); if (itemNode != null) { String nodeName = firstLevelNode.getNodeName(); String nodeValue = getNodeValue(firstLevelNode); if (nodeName != null) { if ("ItemID".equals(nodeName) && nodeValue != null) { try { item.setItemId(Long.parseLong(nodeValue)); } catch (NumberFormatException nfe) { } } else if ("Title".equals(nodeName)) { item.setTitle(nodeValue); } else if ("ListingDetails".equals(nodeName)) { generateItem(firstLevelNode.getChildNodes(), item); } else if ("ViewItemURL".equals(nodeName)) { item.setViewItemURL(nodeValue); } else if ("PictureDetails".equals(nodeName)) { generateItem(firstLevelNode.getChildNodes(), item); } else if ("GalleryURL".equals(nodeName)) { item.setGalleryURL(nodeValue); } else if ("ListingDetails".equals(nodeName)) { generateItem(firstLevelNode.getChildNodes(), item); } else if ("ConvertedBuyItNowPrice".equals(nodeName) && nodeValue != null) { try { item.setBuyItNowPrice(Double.parseDouble(nodeValue)); } catch (NumberFormatException nfe) { } } else if ("StartTime".equals(nodeName) && nodeValue != null) { item.setStartTime(toDate(nodeValue)); } else if ("EndTime".equals(nodeName) && nodeValue != null) { item.setEndTime(toDate(nodeValue)); } else if ("SellingStatus".equals(nodeName)) { generateItem(firstLevelNode.getChildNodes(), item); } else if ("ConvertedCurrentPrice".equals(nodeName) && nodeValue != null) { try { item.setCurrentPrice(Double.parseDouble(nodeValue)); } catch (NumberFormatException nfe) { } } } } } } private Date toDate(String strDate) { if (strDate == null) { return null; } try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); return sdf.parse(strDate); } catch (Exception e) { e.printStackTrace(); } return null; } private String getInputStream(InputStream is) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line = ""; StringBuilder builder = new StringBuilder(); while((line = reader.readLine()) != null) { builder.append(line); } return builder.toString(); } 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 { Calendar tenMinBeforecurrentTime = Calendar.getInstance(); tenMinBeforecurrentTime.add(Calendar.HOUR, -10); Calendar currentTime = Calendar.getInstance(); GetSellerListDAO sessionDao = new GetSellerListDAO(); System.out.println("*************** from product"); System.out.println( sessionDao.getSellerList( false, APP_ID, // "ebaysjinternal", TOKEN, EFORCITY, tenMinBeforecurrentTime.getTime(), currentTime.getTime(), 10)); System.out.println("*************** from sandBox"); System.out.println( sessionDao.getSellerList( true, APP_ID_SANDBOX, TOKEN_SANDBOX, "TESTUSER_socialhub", //"testuser_sandboxfgofh", tenMinBeforecurrentTime.getTime(), currentTime.getTime(), 20)); //System.out.println(sessionDao.getSellerListFromSandBox("TESTUSER_socialhub", Calendar.getInstance().getTime(), to));; } private static final String EFORCITY = "eforcity" ; private static final String APP_ID_SANDBOX= "eBayb1609-29f8-4684-aadb-6ba5a05a182"; private static final String APP_ID = "eBay929a8-96bf-4ad8-a71c-94de77a7c9e"; private static final String TOKEN_SANDBOX= "AgAAAA**AQAAAA**aAAAAA**VyBeTQ**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wJnY+iAZeEqQ2dj6x9nY+seQ**rS0BAA**AAMAAA**aoGraHo8YuNvBclGXrIgdnxGZm7y5Hvm45WprtR0mG0ViRWk7xjw6P6rYtmUCUHP/4T+dYgt4jugQp8ZGzMpyYwd8H0Srf9dDS7lwMhwMkBL4RZ0UFvcbYCR1ukgXWlXWQ3PtGdjnBCAjacHlrGiwJr/XdlaBET/yNwyQpi3Qt0NMRhT0XAXjgaV+Me9SfvJ3oTY6U4vXj7Ui1K7OpUxPBPsg3RQ+PI055EttgYMe2Gw1z0RxxxETzruKX30g2KzvAx+SRF5jtoDECvl0eMJMN+pC8VOSLwQ8UBTsdds3GH+w+iS47fV0l3pvGOFlH/iJ0uIxM0cHGVctqUT246JBBp3Va1BDU3L9P78frLBzkReB8NHza020geqMf2oklt6mFb7gepfqVNvJEAF/SyRUC2CbuV1gYKXf2AAALazne6MNYP4H5EHb44eq3ncQx7P9QXkLOXQO+CT5AxxdrCwFfPh9E6ybqK1k4+vyBzKJEebLTZ1Q9cJBZy6iZ/hMO0YW3k2tcZOXwlI6E8xrQhW0nzrzv32a9uALTSFP+nS9ozFMEkR10HiDEZQlcba+Nm2T+8kJ2fFkzW5Tm741rIvrDkmSHP0I9nOqeUblrxv9lNMF+DFQyJShZEPd3Pn/NphDohhjcmdYEOFnnd2j6Xs2ojoS7BKplISME6we/eebk/W+7Xe1RJarStmJusrKcneYmTVlpK072bVaQcTdkSI4y10QcjbEG1ZVyaDm77b6XuEmDb8pHdXyQoStDNR30+J"; private static final String TOKEN = "AgAAAA**AQAAAA**aAAAAA**xre1Sw**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wFlYCjDpaGowudj6x9nY+seQ**AgAAAA**AAMAAA**DIWV/4lHrc6zyd2bHG+Y7H7wFMfkNM72DZNhtS8iwb/DBPJph72ORDyQtnuBDNeHZPs89atJAIFQBRM/bgNTl9BOyjlUcCJFPuf2mPI4q8904jW07I8kLx1hp5aVAtJ8Z4CsAuELGfVg+f7JaFdw2+4vOHvRCDK6v/o2ucDauhz/wchtpfTnZw6djKIrmaUvJNTt6/YI0C8a5VV91DDNFSgEbzPMZ6hsDntknFDgGkCLyGf5InwJLtXvtZ7UmJ/KX86Lm8i8bTGXRNjLuwPBtjhNLzGfRyTIYK2MdIkJd8mLO9NClwuwSNPqPR4o4XoprREun4cm5YRdtXZ8ZCY4fkK2nC3FuHrgFUq5mcrJzqeKCwbqGiGXotJAfd4aU07rSCsNcuto2w0Bg067rFQNeHRubjWyky0rksVsbdV1sdkD5sOHkyp85oFoKX8F9fLNCjgKy2KoKtzc4f1RYcZBtjRd57+ViWW2Hn8mK6Trqa+wFcJ3uhomvFQkbUiIIieAX6gBkYTmovQTYgiJ4vlyM5uhLf8/DstejnCctM/azwZj8VaS9yV8SVR51bmp2p1KAXkNbGU/eVKqNdxUw06BTJfJstfEycBzhchGzC4D7OERKzpS2e7VlhhIezL+8HWXKvSfzK1MqG/KWenb0Yv8evQ0WnymnzXKkTT7emy3daD5FSanavnUmsjwHqrm3eT/5q7G1CG8LUi/Lv2Bomwj0mkAzMXQDu6w7mOl6/EFhZssD8l5WX1vj61+pJGxiYDp"; public List<EbayItem> getSellerListFromSandBox( String userId, Date from, Date to) throws IOException, SAXException { return getSellerList(true, APP_ID_SANDBOX, TOKEN_SANDBOX, userId, from, to, 100); } public List<EbayItem> getSellerListFromProduction( String userId, Date from, Date to) throws IOException, SAXException { return getSellerList(false, APP_ID, TOKEN, userId, from, to, 100); } }