diff src/twitter.coffee @ 22:b90e6df48d2d

eachLimit instead of each
author Mathias Gebbe <mgebbe@intevation.de>
date Mon, 16 Jun 2014 17:31:05 +0200
parents a52b5b244e51
children 8c56fdbac0fb
line wrap: on
line diff
--- a/src/twitter.coffee	Fri Jun 13 21:21:41 2014 +0200
+++ b/src/twitter.coffee	Mon Jun 16 17:31:05 2014 +0200
@@ -28,6 +28,8 @@
 FromESN = require("./fromESN")
 ToESN = require("./toESN")
 Sync = require("./sync")
+util = require("util")
+twitter = require("twitter")
 
 module.exports = (config) ->
   bridgeid = config.bridgeid
@@ -65,6 +67,8 @@
         separator = "?"
       authorization_endpoint + separator + "oauth_token=" + rt.token
 
+      return
+
     getAccessToken: (site, rt, verifier, callback) ->
       oa = Twitter.getOAuth(site)
       oa.getOAuthAccessToken rt.token, rt.secret, verifier, callback
@@ -89,13 +93,11 @@
 
       return
 
-    sync: (user) ->
+    syncFromESN: (user) ->
       me = user.user_pumpio
       id = user.user_ESN.substr(0,user.user_ESN.indexOf('@'))
       token = user.oauth_token
       secret = user.extra_token
-      util = require("util")
-      twitter = require("twitter")
       twit = new twitter(
         consumer_key: client_id
         consumer_secret: client_secret
@@ -109,13 +111,14 @@
           Usermap.search {id: me + '_to_' + me}, callback
         (user, callback) ->
           if (user[0]?)
+            console.log "get feed from" + me
             Pump.getUserFeed(user[0],callback)
           else
             return
         (feed, callback) ->
           return if not feed?
           ti = new Date().getTime() - interval
-          async.eachSeries feed.items, ((post, callback) ->
+          async.eachLimit feed.items, 10, ((post, callback) ->
             # do for each post
             ts = Date.parse(post.updated)
             if (ts >= ti and post.verb is "post" or post.verb is "share") and (post.object.objectType is "note" or post.object.objectType is "image") and (Pump.isPublicActivity(post)) and (typeof post.object.deleted is "undefined")
@@ -154,27 +157,43 @@
           ), (err) ->
             callback null, 'done'
       ],(err, result) ->
+        console.log "done ToESN twitter user" + me
+        return
+      return
 
+    syncToESN: (user) ->
+      me = user.user_pumpio
+      id = user.user_ESN.substr(0,user.user_ESN.indexOf('@'))
+      token = user.oauth_token
+      secret = user.extra_token
+      twit = new twitter(
+        consumer_key: client_id
+        consumer_secret: client_secret
+        access_token_key: token
+        access_token_secret: secret
+      )
       ######################################
       # get tweets and post them to pump.io#
       ######################################
       twit.verifyCredentials((data) ->
         #console.log util.inspect(data)
+        console.log "get twitter HomeTimeline " + me
         return
       ).getHomeTimeline {include_rts: true, count: 20 }, (data) ->
-        #console.log util.inspect(data)
         ti = (new Date().getTime() - interval)
-        async.each data, ((tweet,cb) ->
+        return if not data? or data.length is 0
+        async.eachLimit data, 10, ((tweet, cb) ->
           async.waterfall [
             (callback) ->
-              FromESN.search {uid: tweet.id + "@twitter_to_" + me, recipientUser: me}, callback
+              FromESN.search {uid: tweet.id + "@twitter_to_" + me}, callback
             (result, callback) ->
               return if result.length isnt 0 or tweet.user.id_str is id
               twitterdate = new Date(Date.parse(tweet.created_at.replace(/( +)/, " UTC$1")))
               ts = Date.parse(twitterdate)
               if (ts >= ti)
                 Sync.postParser tweet, null, 'twitter', callback
-              return
+              else
+                return
             (parsed, callback) ->
               Pump.postUser bridgeid, me, parsed, callback
             (pumppost, callback) ->
@@ -189,12 +208,15 @@
               , callback
           ], (err, result) ->
             cb()
+          return
         ), (err) ->
+          if (err)
+            console.log "Error: " + err
+          else
+            console.log "done ToESN twitter user" + me
           return
       return
 
-    parseTwitterDate : (text) ->
-
     getOAuth: (site) ->
       new OAuth(request_token_endpoint, access_token_endpoint, client_id, client_secret, "1.0", site.url("/authorized-for-twitter"), "HMAC-SHA1", null, # nonce size; use default
         "User-Agent": site.userAgent()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)