Skip to content

d6y/async-twitter-client

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Asynchronous Twitter client intended to be used with the Twitter Streaming API. Build on top of Ning/Netty/Akka provided a fully async end to end communication.

Each "Streaming Session" consist on a long running Http connection and a group of actors who take care of the different stages.

Twitter sends the information by chunks. Then, each part will represent an individual message to be processed.

Usage:

object ConsoleTwitterClient extends App {

  val system = ActorSystem("ConsoleTwitterClient")

  try {
    val s = system.actorOf[ConsoleTwitterSession]
    s ! Sample()

    Thread.sleep(50000) // Wait some time to get some tweets
  } finally {
    system.stop()
  }


class ConsoleTwitterSession extends DefaultTwitterStreamingSession {
  def username = "someusername"

  def password = "somepass"

  val defaultTracks = Set("akka", "scala")

  def handler = this.context.actorOf[PrinterActor]
}

class PrinterActor extends Actor with Logging {
  def receive = {
    case EntityReceived(tweet) => info("Tweet: %s \n".format(tweet))
    case ExceptionOnProcessing(throwable) => info("Exception on stream: %s \n".format(throwable))
    case ErrorCodeOnProcessing(code) => info("Error code recieved: %s \n".format(code))
  }
}

So, you have to provide the handler (PrinterActor) and the login credentials.

Authentication

The DefaultTwitterStreamingSession use basic authentication. But, you can use the OAuthTwitterStreamingSession trait.

class ConsoleTwitterSession extends OAuthTwitterStreamingSession {

  val apiKey = "someKey"

  val apiSecret = "someSecret"

  val defaultTracks = Set("akka", "scala")

  val handler = this.context.actorOf[PrinterActor]

  def verificationCode(authUrl: String) = {
    println("Go to the url %s and enter the verification code".format(authUrl))
    Console.readLine()
  }
}

OAuthTwitterStreamingSession Looks like

trait OAuthTwitterStreamingSession
  extends TwitterStreamingSession[Tweet] with BackOffStreamReconnectionStrategy with JsonEntitySerializer with OAuthAuthenticationMechanism

About

Async Twitter client on top of Ning/Netty/Akka

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published