OSDN Git Service

Txxxxx
[traindelaybot/source.git] / workspace / TrainDelayBot / src / com / yuji / tdb / TrainDelayBotServlet.java
1 package com.yuji.tdb;\r
2 \r
3 import java.io.IOException;\r
4 import java.util.logging.Logger;\r
5 \r
6 import javax.servlet.http.HttpServlet;\r
7 import javax.servlet.http.HttpServletRequest;\r
8 import javax.servlet.http.HttpServletResponse;\r
9 \r
10 import twitter4j.Twitter;\r
11 import twitter4j.TwitterException;\r
12 import twitter4j.TwitterFactory;\r
13 import twitter4j.auth.AccessToken;\r
14 import twitter4j.auth.OAuthAuthorization;\r
15 import twitter4j.auth.RequestToken;\r
16 import twitter4j.conf.Configuration;\r
17 import twitter4j.conf.ConfigurationBuilder;\r
18 \r
19 import com.yuji.tdb.common.CommonUtil;\r
20 import com.yuji.tdb.db.KeyValueDao;\r
21 import com.yuji.tdb.debug.Debug;\r
22 import com.yuji.tdb.twitter.TwitterUtil;\r
23 \r
24 @SuppressWarnings("serial")\r
25 public class TrainDelayBotServlet extends HttpServlet {\r
26         private static final Logger log = Logger\r
27                         .getLogger(TrainDelayBotServlet.class.getName());\r
28         // private static RequestToken requestToken = null;\r
29         // private static AccessToken accessToken = null;\r
30         // private static String consumerKey = null;\r
31         // private static String consumerSecret = null;\r
32 \r
33         private KeyValueDao dao = KeyValueDao.getInstance();\r
34 \r
35         public void doGet(HttpServletRequest req, HttpServletResponse resp)\r
36                         throws IOException {\r
37                 try {\r
38                         log.info("start");\r
39 \r
40                         resp.setContentType("text/plain");\r
41                         resp.getWriter().println("<h3>traindelaybot Hello, world</h3>");\r
42 \r
43                         String parmConsumerKey = req.getParameter("key");\r
44                         String parmConsumerSecret = req.getParameter("secret");\r
45                         String parmResult = req.getParameter("result");\r
46                         if (!CommonUtil.isNull(parmConsumerKey)\r
47                                         && !CommonUtil.isNull(parmConsumerSecret)) {\r
48                                 setOAuthAuthorization(req, resp, parmConsumerKey,\r
49                                                 parmConsumerSecret);\r
50                                 return;\r
51                         }\r
52 \r
53                         String consumerKey = dao.get(KeyValueDao.KEY_CONSUMER_KEY);\r
54                         String consumerSecret = dao.get(KeyValueDao.KEY_CONSUMER_SECRET);\r
55                         if (CommonUtil.isNull(consumerKey)\r
56                                         || CommonUtil.isNull(consumerSecret)) {\r
57                                 log.warning("" + Debug.getLineNo());\r
58                                 return;\r
59                         }\r
60 \r
61                         if (!CommonUtil.isNull(parmResult)) {\r
62                                 String requestTokenKey = dao.get(KeyValueDao.KEY_REQUEST_TOKEN);\r
63                                 String requestTokenSecret = dao\r
64                                                 .get(KeyValueDao.KEY_REQUEST_TOKEN_SECRET);\r
65 \r
66                                 if (CommonUtil.isNull(requestTokenKey)\r
67                                                 || CommonUtil.isNull(requestTokenSecret)) {\r
68                                         log.warning("" + Debug.getLineNo());\r
69                                         return;\r
70                                 }\r
71                                 RequestToken requestToken = new RequestToken(requestTokenKey,\r
72                                                 requestTokenSecret);\r
73                                 resultOAuthAuthorization(consumerKey, consumerSecret,\r
74                                                 requestToken);\r
75                                 return;\r
76                         }\r
77 \r
78                         String accessTokenKey = dao.get(KeyValueDao.KEY_ACCESS_TOKEN);\r
79                         String accessTokenSecret = dao\r
80                                         .get(KeyValueDao.KEY_ACCESS_TOKEN_SECRET);\r
81                         if (CommonUtil.isNull(accessTokenKey)\r
82                                         || CommonUtil.isNull(accessTokenSecret)) {\r
83                                 log.warning("" + Debug.getLineNo());\r
84                                 return;\r
85                         }\r
86 \r
87                         AccessToken accessToken = new AccessToken(accessTokenKey,\r
88                                         accessTokenSecret);\r
89                         TwitterUtil util = TwitterUtil.getInstance();\r
90                         util.main(consumerKey, consumerSecret, accessToken);\r
91                 } finally {\r
92                         log.info("end");\r
93                 }\r
94 \r
95         }\r
96 \r
97         private void setOAuthAuthorization(HttpServletRequest req,\r
98                         HttpServletResponse resp, String parmConsumerKey,\r
99                         String parmConsumerSecret) {\r
100                 try {\r
101                         ConfigurationBuilder confBuilder = new ConfigurationBuilder();\r
102 \r
103                         confBuilder.setDebugEnabled(true);\r
104                         confBuilder.setOAuthConsumerKey(parmConsumerKey);\r
105                         confBuilder.setOAuthConsumerSecret(parmConsumerSecret);\r
106                         Configuration conf = confBuilder.build();\r
107 \r
108                         String url = req.getRequestURL().toString();\r
109 \r
110                         OAuthAuthorization oauth = new OAuthAuthorization(conf);\r
111                         // Twitter\82Ì\94F\8fØ\89æ\96Ê\82©\82ç\82Ì\96ß\82è\90æ\82ð\8ew\92è\82µ\82Ü\82·\81B\r
112                         // AccessToken\83R\83\93\83g\83\8d\81[\83\89\82ð\8ew\92è\82µ\82Ü\82·\81B\r
113                         String callbackURL = url + "?result=yes";\r
114                         // RequestToken requestToken =\r
115                         // oauth.getOAuthRequestToken(callbackURL);\r
116                         RequestToken requestToken = oauth.getOAuthRequestToken(callbackURL);\r
117                         // RequestToken\82ð\83Z\83b\83V\83\87\83\93\82É\95Û\91\82µ\82Ä\82¨\82«\82Ü\82·\81B\r
118                         // sessionScope("RequestToken", requestToken);\r
119                         // Twitter\82Ì\94F\8fØ\89æ\96Ê\82Ö\83\8a\83_\83C\83\8c\83N\83g\82µ\82Ü\82·\81B\r
120 \r
121                         // consumerKey = parmConsumerKey;\r
122                         // consumerSecret = parmConsumerSecret;\r
123                         dao.put(KeyValueDao.KEY_CONSUMER_KEY, parmConsumerKey);\r
124                         dao.put(KeyValueDao.KEY_CONSUMER_SECRET, parmConsumerSecret);\r
125                         dao.put(KeyValueDao.KEY_REQUEST_TOKEN, requestToken.getToken());\r
126                         dao.put(KeyValueDao.KEY_REQUEST_TOKEN_SECRET,\r
127                                         requestToken.getTokenSecret());\r
128 \r
129                         resp.sendRedirect(requestToken.getAuthenticationURL());\r
130                 } catch (TwitterException e) {\r
131                         // TODO Auto-generated catch block\r
132                         e.printStackTrace();\r
133                         log.severe(e.toString());\r
134                 } catch (IOException e) {\r
135                         // TODO Auto-generated catch block\r
136                         e.printStackTrace();\r
137                         log.severe(e.toString());\r
138                 }\r
139         }\r
140 \r
141         private void resultOAuthAuthorization(String consumerKey,\r
142                         String consumerSecret, RequestToken requestToken) {\r
143                 try {\r
144                         // Twitter twitter = new TwitterFactory().getInstance();\r
145                         // String tokenKey = requestToken.getToken();\r
146                         // String tokenSecret = requestToken.getTokenSecret();\r
147 \r
148                         ConfigurationBuilder confBuilder = new ConfigurationBuilder();\r
149                         confBuilder.setDebugEnabled(true).setOAuthConsumerKey(consumerKey)\r
150                                         .setOAuthConsumerSecret(consumerSecret);\r
151                         TwitterFactory factory = new TwitterFactory(confBuilder.build());\r
152                         Twitter twitter = factory.getInstance();\r
153 \r
154                         AccessToken accessToken = twitter.getOAuthAccessToken(requestToken);\r
155                         dao.put(KeyValueDao.KEY_ACCESS_TOKEN, accessToken.getToken());\r
156                         dao.put(KeyValueDao.KEY_ACCESS_TOKEN_SECRET,\r
157                                         accessToken.getTokenSecret());\r
158                 } catch (TwitterException e) {\r
159                         // TODO Auto-generated catch block\r
160                         e.printStackTrace();\r
161                         log.severe(e.toString());\r
162                 }\r
163         }\r
164 }\r