/* * TwitterApi.java * * Copyright (C) 2005-2008 Tommi Laukkanen * http://www.substanceofcode.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.substanceofcode.twitter; import com.substanceofcode.twitter.model.Status; import com.substanceofcode.utils.HttpUtil; import com.substanceofcode.utils.Log; import com.substanceofcode.utils.StringUtil; import java.io.IOException; import java.util.Vector; /** * TwitterApi * * @author Tommi Laukkanen (tlaukkanen at gmail dot com) */ public class TwitterApi { private String username; private String password; private static final String PUBLIC_TIMELINE_URL = "http://www.twitter.com/statuses/public_timeline.xml"; private static final String FRIENDS_TIMELINE_URL = "http://www.twitter.com/statuses/friends_timeline.xml"; private static final String USER_TIMELINE_URL = "http://www.twitter.com/statuses/user_timeline.xml"; private static final String RESPONSES_TIMELINE_URL = "http://twitter.com/statuses/replies.xml"; private static final String STATUS_UPDATE_URL = "http://twitter.com/statuses/update.xml"; /** Creates a new instance of TwitterApi */ public TwitterApi() { } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } /** * Request public timeline from Twitter API. * @return Vector containing StatusEntry items. */ public Vector requestPublicTimeline() { return requestTimeline( FRIENDS_TIMELINE_URL ); } /** * Request public timeline from Twitter API. * @return Vector containing StatusEntry items. */ public Vector requestUserTimeline() { return requestTimeline(USER_TIMELINE_URL); } /** * Request public timeline from Twitter API. * @return Vector containing StatusEntry items. */ public Vector requestEveryoneTimeline() { return requestTimeline(PUBLIC_TIMELINE_URL); } /** * Request responses timeline from Twitter API.{ * @return Vector containing StatusEntry items. */ public Vector requestResponsesTimeline() { return requestTimeline(RESPONSES_TIMELINE_URL); } public Status updateStatus(String status) { try { StatusFeedParser parser = new StatusFeedParser(); String url = STATUS_UPDATE_URL + "?status=" + StringUtil.urlEncode(status) + "&source=twim"; HttpUtil.doPost( url, parser ); Vector statuses = parser.getStatuses(); if(statuses!=null && statuses.isEmpty()==false) { return (Status)statuses.elementAt(0); } } catch(Exception ex) { Log.error("Error while updating status: " + ex.getMessage()); } return null; } private Vector requestTimeline(String timelineUrl) { Vector entries = new Vector(); try { HttpUtil.setBasicAuthentication(username, password); StatusFeedParser parser = new StatusFeedParser(); HttpUtil.doGet(timelineUrl, parser); entries = parser.getStatuses(); } catch (IOException ex) { ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } return entries; } }