use of h2weibo.model.DBHelper in project twitter-2-weibo by rjyo.
the class CallbackServlet method doGet.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpServletRouter r = new HttpServletRouter(request);
r.setPattern("/:type");
if (request.getParameter("denied") != null) {
response.sendRedirect("/");
return;
}
HttpSession session = request.getSession(false);
String loginUser = (String) session.getAttribute(Keys.SESSION_LOGIN_USER);
String oauthVerifier = request.getParameter("oauth_verifier");
DBHelper helper = (DBHelper) request.getAttribute(Keys.REQUEST_DB_HELPER);
if (r.is(":type", "weibo.jsp")) {
String code = request.getParameter("code");
if (code != null) {
T2WUser tid = helper.findOneByUser(loginUser);
if (tid.getToken() == null) {
// send for the first time
session.setAttribute(Keys.SESSION_PROMPT_TWEET, "You are ready to go! Do you want to tweet about this service and share it with your friends?");
}
Oauth oauth = new Oauth();
try {
AccessToken token = oauth.getAccessTokenByCode(code);
tid.setToken(token.getAccessToken());
Weibo weibo = new Weibo();
weibo.setToken(tid.getToken());
Account am = new Account();
try {
JSONObject obj = am.getUid();
String uid = obj.getString("uid");
tid.setWeiboUserId(uid);
} catch (WeiboException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
helper.saveUser(tid);
} catch (WeiboException e) {
log.error(e);
}
} else {
log.error("Can't auth " + loginUser + " for Weibo. " + request.getQueryString());
}
} else if (r.is(":type", "twitter")) {
try {
TwitterFactory factory = new TwitterFactory();
Twitter t = factory.getInstance();
twitter4j.auth.RequestToken req = (RequestToken) session.getAttribute(Keys.SESSION_REQUEST_TOKEN);
twitter4j.auth.AccessToken accessToken = t.getOAuthAccessToken(req, oauthVerifier);
session.removeAttribute(Keys.SESSION_REQUEST_TOKEN);
if (accessToken != null) {
t.setOAuthAccessToken(accessToken);
User user = t.verifyCredentials();
loginUser = user.getScreenName();
T2WUser tid = helper.findOneByUser(loginUser);
if (tid.getTwitterToken() == null) {
// save latest id for the first time. sync from that tweet
ResponseList<Status> tl = t.getUserTimeline();
if (tl.size() > 0) {
Status s = tl.get(0);
tid.setLatestId(s.getId());
}
}
tid.setTwitterToken(accessToken.getToken());
tid.setTwitterTokenSecret(accessToken.getTokenSecret());
helper.saveUser(tid);
session.setAttribute(Keys.SESSION_LOGIN_USER, loginUser);
}
} catch (TwitterException e) {
log.error("Twitter Exception", e);
throw new RuntimeException(e);
}
}
String requestUrl = (String) session.getAttribute(Keys.SESSION_REQUEST_URL);
if (requestUrl != null) {
session.removeAttribute(Keys.SESSION_REQUEST_URL);
response.sendRedirect(requestUrl);
} else {
response.sendRedirect("/u/" + loginUser);
}
}
use of h2weibo.model.DBHelper in project twitter-2-weibo by rjyo.
the class CommandServlet method doGet.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpServletRouter router = new HttpServletRouter(request);
router.setPattern("/:cmd/:id");
response.setContentType("text/plain; charset=UTF-8");
response.setStatus(200);
PrintWriter writer = response.getWriter();
final DBHelper helper = (DBHelper) request.getAttribute(Keys.REQUEST_DB_HELPER);
if (router.is(":cmd", "users")) {
Set<String> ids = helper.getAuthorizedIds();
Map<String, String> mappings = helper.getMappings();
writer.println(String.format("Syncing user list: (%d users)", ids.size()));
for (String id : ids) {
writer.println(String.format(" %s => %s", id, mappings.get(id)));
}
} else if (router.is(":cmd", "mapping")) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
helper.createUserMap();
}
});
t.start();
response.sendRedirect("/");
} else if (router.is(":cmd", "info")) {
String info = helper.getJedisInfo();
writer.println(info);
} else if (router.is(":cmd", "del")) {
if (router.has(":id")) {
String user = router.get(":id");
helper.deleteUser(helper.findOneByUser(user));
response.sendRedirect("/u/" + user);
}
} else if (router.is(":cmd", "u")) {
if (router.has(":id")) {
T2WUser u = helper.findOneByUser(router.get(":id"));
writer.println(String.format("Latest tweet ID is %d", u.getLatestId()));
writer.println(String.format("Twitter ID is %s", router.get(":id")));
writer.println(String.format("Weibo ID is %s", helper.getWeiboId(u.getUserId())));
writer.println(String.format("Twitter Token %s", u.getTwitterToken()));
writer.println(String.format("Twitter Secret %s", u.getTwitterTokenSecret()));
writer.println(String.format("Weibo Token %s", u.getToken()));
writer.println(String.format("Weibo User ID %s", u.getWeiboUserId()));
}
} else {
response.sendRedirect("/");
}
writer.close();
}
use of h2weibo.model.DBHelper in project twitter-2-weibo by rjyo.
the class SaveOptionsServlet method doDelete.
@Override
protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(false);
String loginUser = (String) session.getAttribute(Keys.SESSION_LOGIN_USER);
log.info("Deleting user @" + loginUser);
DBHelper helper = (DBHelper) request.getAttribute(Keys.REQUEST_DB_HELPER);
T2WUser user = helper.findOneByUser(loginUser);
helper.deleteUser(user);
session.invalidate();
response.setStatus(200);
}
use of h2weibo.model.DBHelper in project twitter-2-weibo by rjyo.
the class UserServlet method handleRequest.
@Override
protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) {
HttpServletRouter r = new HttpServletRouter(request);
r.setPattern("/:id");
HttpSession session = request.getSession(false);
DBHelper helper = (DBHelper) request.getAttribute(Keys.REQUEST_DB_HELPER);
// Service limit
String uId = r.get(":id");
if (!helper.isUser(uId) && helper.getUserCount() > 50) {
return getTemplate("full.vm");
}
T2WUser user = helper.findOneByUser(uId);
if (r.has(":id")) {
log.info("Displaying user info for @" + uId);
ctx.put("user_id", uId);
ctx.put("user", helper.findOneByUser(uId));
try {
User weiboUser = (User) session.getAttribute(Keys.SESSION_WEIBO_USER);
if (weiboUser == null) {
Users um = new Users();
weiboUser = um.showUserById(user.getWeiboUserId());
session.setAttribute(Keys.SESSION_WEIBO_USER, weiboUser);
}
ctx.put("weibo_user", weiboUser.getScreenName());
ctx.put("weibo_user_image", weiboUser.getProfileImageURL().toString());
ctx.put("weibo_login", 1);
// save weiboUser ID mapping
helper.setWeiboId(user.getUserId(), weiboUser.getScreenName());
} catch (Exception e) {
// 401 = not logged in
if (e instanceof WeiboException && ((WeiboException) e).getStatusCode() != 401) {
e.printStackTrace();
}
}
try {
twitter4j.User twitterUser = (twitter4j.User) session.getAttribute(Keys.SESSION_TWITTER_USER);
if (twitterUser == null) {
TwitterFactory factory = new TwitterFactory();
Twitter t = factory.getInstance();
t.setOAuthAccessToken(new AccessToken(user.getTwitterToken(), user.getTwitterTokenSecret()));
twitterUser = t.verifyCredentials();
session.setAttribute(Keys.SESSION_TWITTER_USER, twitterUser);
}
ctx.put("twitter_user", twitterUser.getScreenName());
ctx.put("twitter_user_image", twitterUser.getProfileImageURL().toString());
ctx.put("twitter_login", 1);
} catch (Exception e) {
// 401 = not logged in
if (e instanceof TwitterException && ((TwitterException) e).getStatusCode() != 401) {
e.printStackTrace();
}
}
}
Object message = session.getAttribute(Keys.SESSION_MESSAGE);
if (message != null) {
ctx.put("message", message);
session.removeAttribute(Keys.SESSION_MESSAGE);
}
Object prompt = session.getAttribute(Keys.SESSION_PROMPT_TWEET);
if (prompt != null) {
ctx.put("prompt", prompt);
session.removeAttribute(Keys.SESSION_PROMPT_TWEET);
}
return getTemplate("user.vm");
}
use of h2weibo.model.DBHelper in project twitter-2-weibo by rjyo.
the class CommandServlet method init.
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
log.info("Web started.");
JedisPool pool = getPool(getServletContext());
DBHelper helper = DBHelperFactory.createHelper(pool);
// clear the queue
helper.clearQueue();
Scheduler scheduler = new Scheduler();
QueueTask task = new QueueTask();
task.setHelper(DBHelperFactory.createHelper(pool));
scheduler.schedule("*/2 * * * *", task);
scheduler.start();
log.info("Cron scheduler started.");
log.info("Worker started.");
// 1 Threads to handle the sync job
new Thread(new SyncWorkerRunnable(DBHelperFactory.createHelper(pool))).start();
}
Aggregations