mgebbe@19: # Copyright (C) 2014 by Intevation GmbH mgebbe@19: # Author: Mathias Gebbe mgebbe@19: # mgebbe@19: # This file is Free Software under the Apache License, Version 2.0; mgebbe@19: # and comes with NO WARRANTY! mgebbe@19: # See the documentation coming with pumpbridge for details. mgebbe@19: mgebbe@19: _ = require("underscore") mgebbe@19: async = require("async") mgebbe@19: Facebook = require("./facebook") mgebbe@19: Usermap = require("./usermap") mgebbe@19: Google = require("./google") mgebbe@19: Config = require ("./config") mgebbe@19: config = Config.config mgebbe@19: Twitter = require("./twitter")(config) mgebbe@19: mgebbe@19: databank = require("databank") mgebbe@19: Databank = databank.Databank mgebbe@19: DatabankObject = databank.DatabankObject mgebbe@19: mgebbe@19: db = Databank.get(config.driver, config.params) mgebbe@19: DatabankObject.bank = db mgebbe@19: mgebbe@19: syncFromESN = () -> mgebbe@19: console.log 'syncFromESN' mgebbe@19: mgebbe@21: #### mgebbe@21: # Facebook mgebbe@21: try mgebbe@21: Usermap.scan ((user) -> mgebbe@21: if user.id.indexOf('@facebook') isnt -1 mgebbe@21: console.log "start sync for facebook user" mgebbe@21: Facebook.sync(user) mgebbe@21: ), (err) -> mgebbe@21: catch err mgebbe@27: console.log 'Facebook Error!' + err mgebbe@21: mgebbe@21: # Twitter mgebbe@21: try mgebbe@21: Usermap.scan ((user) -> mgebbe@21: if user.id.indexOf('@twitter') isnt -1 mgebbe@30: # do if true or undefined mgebbe@30: unless user.toesn is false mgebbe@30: console.log "start sync TOESN for twitter user" mgebbe@30: Twitter.syncToESN(user) mgebbe@30: unless user.fromesn is false mgebbe@30: console.log "start sync FROMESN for twitter user" mgebbe@30: Twitter.syncFromESN(user) mgebbe@30: Twitter.postLike(user) mgebbe@21: ), (err) -> mgebbe@21: catch err mgebbe@27: console.log 'Twitter Error!' + err mgebbe@21: mgebbe@21: # Google mgebbe@21: try mgebbe@21: Usermap.scan ((user) -> mgebbe@21: if user.id.indexOf('@google') isnt -1 mgebbe@21: console.log "start sync for google user" mgebbe@21: Google.sync(user) mgebbe@21: ), (err) -> mgebbe@21: catch err mgebbe@27: console.log 'Google Error!' + err mgebbe@21: #### mgebbe@19: mgebbe@19: return mgebbe@19: mgebbe@19: sync = () -> mgebbe@19: mgebbe@19: # Do this every xx minutes mgebbe@19: console.log '\n\n\n' + "starting sync deamon" mgebbe@19: interval = config.interval mgebbe@19: if not (interval?) mgebbe@19: interval = 15 * 60 * 1000 # 900 000 ms (15min) mgebbe@22: mgebbe@21: async.waterfall [ mgebbe@21: (callback) -> mgebbe@21: db.connect(config.params, callback) mgebbe@21: ], (err, result) -> mgebbe@21: setInterval syncFromESN, interval mgebbe@21: syncFromESN() mgebbe@19: return mgebbe@19: mgebbe@19: sync()