Package

Source Code of TwitterFeedItemProvider$TwitterListener

/*
* Author: cbedford
* Date: 11/10/13
* Time: 1:19 PM
*/


import twitter4j.*;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;

import java.io.IOException;
import java.util.List;
import java.util.concurrent.ConcurrentLinkedQueue;


public class TwitterFeedItemProvider implements IFeedItemProvider {
    private final ConcurrentLinkedQueue<String> itemQueue = new ConcurrentLinkedQueue<String>();

    private final String oAuthConsumerKey;
    private final String oAuthConsumerSecret;
    private final String oAuthAccessToken;
    private final String oAuthAccessTokenSecret;
    private final String[] searchTerms;


    public class TwitterListener implements StatusListener {
        @Override
        public void onStatus(Status status) {
            String text = status.getText();
            if (status.isRetweet()) {
                text = status.getRetweetedStatus().getText();
            }
            itemQueue.offer(text);
        }

        @Override
        public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
        }

        @Override
        public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
        }

        @Override
        public void onScrubGeo(long userId, long upToStatusId) {
        }

        @Override
        public void onStallWarning(StallWarning warning) {
        }

        @Override
        public void onException(Exception ex) {
            ex.printStackTrace();
        }
    }

    /*

    TwitterFeedItemProvider(List<String> searchTermsList) {
        this.searchTerms = searchTermsList.toArray(new String[searchTermsList.size()]);
    }
     */

    TwitterFeedItemProvider(final String oAuthConsumerKey,
                            final String oAuthConsumerSecret,
                            final String oAuthAccessToken,
                            final String oAuthAccessTokenSecret,
                            String... terms) {
        this.oAuthConsumerKey = oAuthConsumerKey;
        this.oAuthConsumerSecret = oAuthConsumerSecret;
        this.oAuthAccessToken = oAuthAccessToken;
        this.oAuthAccessTokenSecret = oAuthAccessTokenSecret;

        this.searchTerms = terms;
    }

    @Override
    public Runnable getRunnableTask() {
        return new Runnable() {
            @Override
            public void run() {
                TwitterStream twitterStream = getTwitterStream();
                twitterStream.addListener(new TwitterListener());
                long[] followArray = new long[0];
                twitterStream.filter(new FilterQuery(0, followArray, searchTerms));
            }
        };
    }

    private TwitterStream getTwitterStream() {
        TwitterStream twitterStream;
        ConfigurationBuilder builder = new ConfigurationBuilder();
        builder.setOAuthConsumerKey(oAuthConsumerKey);
        builder.setOAuthConsumerSecret(oAuthConsumerSecret);
        builder.setOAuthAccessToken(oAuthAccessToken);
        builder.setOAuthAccessTokenSecret(oAuthAccessTokenSecret);

        Configuration conf = builder.build();

        twitterStream = new TwitterStreamFactory(conf).getInstance();
        return twitterStream;
    }

    @Override
    public Object getNextItemIfAvailable() {
        return itemQueue.poll();
    }
}
TOP

Related Classes of TwitterFeedItemProvider$TwitterListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.