1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.mortbay.demo;
16
17 import java.io.BufferedReader;
18 import java.io.IOException;
19 import java.io.InputStreamReader;
20 import java.io.PrintWriter;
21 import java.net.HttpURLConnection;
22 import java.net.URI;
23 import java.net.URISyntaxException;
24 import java.net.URL;
25 import java.net.URLEncoder;
26 import java.util.ArrayList;
27 import java.util.HashMap;
28 import java.util.List;
29 import java.util.Map;
30 import java.util.StringTokenizer;
31
32 import javax.servlet.ServletConfig;
33 import javax.servlet.ServletException;
34 import javax.servlet.http.HttpServlet;
35 import javax.servlet.http.HttpServletRequest;
36 import javax.servlet.http.HttpServletResponse;
37
38 import org.mortbay.util.ajax.JSON;
39
40
41
42
43 public class SerialRestServlet extends HttpServlet
44 {
45 private final static String __DEFAULT_APPID = "Webtide81-adf4-4f0a-ad58-d91e41bbe85";
46
47 final static String ITEMS_PARAM="items";
48 final static String APPID_PARAM="appid";
49
50 private String _appid;
51
52 public void init(ServletConfig servletConfig) throws ServletException
53 {
54 if (servletConfig.getInitParameter(APPID_PARAM)==null)
55 _appid = __DEFAULT_APPID;
56 else
57 _appid=servletConfig.getInitParameter(APPID_PARAM);
58
59 }
60
61 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
62 {
63 long start = System.currentTimeMillis();
64
65 String searchParameters = request.getParameter(ITEMS_PARAM);
66 List<String> itemTokens = new ArrayList<String>();
67
68 if (searchParameters == null)
69 {
70 response.setContentType("text/html");
71 PrintWriter out = response.getWriter();
72
73 out.println("<HTML><BODY>pass in url with ?items=a,b,c,d<br/>for more dramatic results run multiple times with 10 or more items</BODY></HTML>");
74 out.close();
75
76 }
77 else
78 {
79 StringTokenizer strtok = new StringTokenizer( (String)searchParameters, ",");
80
81 while ( strtok.hasMoreTokens() )
82 {
83 itemTokens.add( URLEncoder.encode(strtok.nextToken(), "UTF-8") );
84 }
85 }
86
87
88 List list = new ArrayList();
89
90 for (String itemName : itemTokens)
91 {
92 URL url = new URL("http://open.api.ebay.com/shopping?MaxEntries=5&appid="+_appid+"&version=573&siteid=0&callname=FindItems&responseencoding=JSON&QueryKeywords=" + itemName);
93
94 HttpURLConnection connection = (HttpURLConnection)url.openConnection();
95 connection.setRequestMethod("GET");
96
97 Map query = (Map)JSON.parse(new BufferedReader(new InputStreamReader(connection.getInputStream())));
98
99 Object[] itemsArray = (Object[])query.get("Item");
100
101 if (itemsArray==null)
102 {
103 Map<String, String> m = new HashMap<String, String>();
104
105 m.put("Title", "\"" + itemName + "\" not found!");
106 list.add(m);
107 }
108 else
109 {
110 List items = new ArrayList();
111 for (Object o : (Object[])query.get("Item"))
112 list.add((Map)o);
113 }
114 }
115
116
117 response.setContentType("text/html");
118 PrintWriter out=response.getWriter();
119 out.println("<html><head><style type='text/css'>img:hover {height:75px}</style></head><body><small>");
120
121
122 for (Map m : (List<Map>)list)
123 {
124 out.print("<a href=\""+m.get("ViewItemURLForNaturalSearch")+"\">");
125 if (m.containsKey("GalleryURL"))
126 out.print("<img border='1px' height='20px' src=\""+m.get("GalleryURL")+"\"/> ");
127
128 out.print(m.get("Title"));
129 out.println("</a><br/>");
130 }
131
132 out.println("<hr />");
133 out.print( "Total Time: ");
134 long duration=System.currentTimeMillis()-start;
135 out.print( duration );
136 out.println( "ms<br/>");
137 out.print( "Thread held: ");
138 out.print( duration );
139 out.println( "ms");
140
141 out.println("</small></body></html>" );
142 out.close();
143
144
145
146 }
147
148
149
150
151
152 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
153 {
154 doGet(request, response);
155 }
156
157 }