You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@esme.apache.org by vd...@apache.org on 2009/02/17 21:52:34 UTC

svn commit: r745254 - /incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/TwitterAPI.scala

Author: vdichev
Date: Tue Feb 17 20:52:34 2009
New Revision: 745254

URL: http://svn.apache.org/viewvc?rev=745254&view=rev
Log:
ESME-31 posting status updates from Twitter API

Modified:
    incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/TwitterAPI.scala

Modified: incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/TwitterAPI.scala
URL: http://svn.apache.org/viewvc/incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/TwitterAPI.scala?rev=745254&r1=745253&r2=745254&view=diff
==============================================================================
--- incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/TwitterAPI.scala (original)
+++ incubator/esme/trunk/server/src/main/scala/org/apache/esme/api/TwitterAPI.scala Tue Feb 17 20:52:34 2009
@@ -79,7 +79,7 @@
     case req @ Req(ApiPath :: "statuses" :: "friends_timeline" :: Nil, this.method, GetRequest) => () => friendsTimeline(req)
     case req @ Req(ApiPath :: "statuses" :: "user_timeline" :: Nil, this.method, GetRequest) => () => userTimeline(req)
     // case Req(ApiPath :: "statuses" :: "show" :: Nil, this.method, GetRequest) => showStatus
-    // case Req(ApiPath :: "statuses" :: "update" :: Nil, this.method, GetRequest) => () => update(S)
+    case req @ Req(ApiPath :: "statuses" :: "update" :: Nil, this.method, PostRequest) => () => update(S, req)
 
     // case Req(ApiPath :: "statuses" :: "friends" :: Nil, this.method, GetRequest) => friends
     // case Req(ApiPath :: "statuses" :: "followers" :: Nil, this.method, GetRequest) => followers
@@ -118,7 +118,7 @@
     "favorited" -> false,
     "in_reply_to_status_id" -> None,
     "in_reply_to_user_id" -> None,
-    "in_reply_to_screen_name" -> None,
+    "in_reply_to_screen_name" -> None
     )
   }
   
@@ -176,6 +176,26 @@
     Full(Right(Map("statuses" -> ("status", statusList) )))
   }
   
+  def update(params: HasParams, req: Req): Box[TwitterResponse] = {
+    for (user <- calcUser(req) ?~ "User not found";
+         msg <- req.param("status") ?~ "Message not included")
+    yield {
+      val from: String = req.param("source") openOr "twitterapi"
+
+      Distributor !
+      Distributor.UserCreatedMessage(user.id.is, msg, Nil,
+                                     millis,
+                                     Empty,
+                                     from,
+                                     req.param("replyto").map(toLong))
+      Right(Map("status" ->
+        msgData(Message.create.author(user.id.is).when(millis).
+          source(from).
+          setTextAndTags(msg, Nil, None).get)
+      ))
+    }
+  }
+
   private def calcUser(req: Req): Box[User] = 
     LiftRules.authentication match {
       case basicAuth: HttpBasicAuthentication =>