Ejemplo n.º 1
0
  publish: function(user, callback) {
    var consumer = Oauth.createConsumer(keys.twitter.consumerKey, keys.twitter.consumerSecret),
        token = Oauth.createToken(user.accessToken, user.accessTokenSecret),
        signature = Oauth.createHmac(consumer, token),
        body = { status: this.get('text') },
        request = {
          host: urls.base,
          path: urls.publish,
          https: true,
          method: 'POST',
          body: body,
          oauth_signature: signature
        },
        req = Oauth.request(request, function(response) {
          var responseData = '';

          response.setEncoding('utf8');
          response.on('data', function(chunk) {
            responseData += chunk;
          });
          response.on('end', function() {
            if (callback) {
              callback(JSON.parse(responseData));
            }
        });
    });

    req.write(body);
    req.end();
  }
Ejemplo n.º 2
0
function twitter(path, body) {
	var signer = oauth.createHmac(
		oauth.createConsumer(process.env.CONSUMER_KEY, process.env.CONSUMER_SECRET),
		oauth.createToken(process.env.TOKEN, process.env.TOKEN_SECRET)
	);

	var request = {
			port: 443,
			host: 'api.twitter.com',
			https: true,
			path: '/1.1/' + path,
			oauth_signature: signer,
			method: 'POST',
			body: body
	};

	var req = oauth.request(request, function(res) {
		if(res.statusCode != 200) {
			console.log('http error on ' + path, body, res.statusCode);
			res.setEncoding('utf8');
			res.on('data', function(chunk) {
				console.log(chunk);
			});
		} else {
			console.log('success ' + path, body);
		}
	});
	req.write(body);
	req.end();

	req.on('error', function(e) {
		console.error('request error: ' + e.message);
	});
}
Ejemplo n.º 3
0
var Streamer = function(authConf, reqConf) {
	var self = this;
	var signer = oauth.createHmac(oauth.createConsumer(authConf.consumerKey, authConf.consumerSecret), oauth.createToken(authConf.tokenKey, authConf.tokenSecret));
	reqConf["oauth_signature"] = signer;
	var buffer = "";

	var socketTimeout = 1000;
	var networkTimeoutStart = 250;
	var networkTimeoutEnd = 16000;
	var httpTimeoutStart = 10000;
	var httpTimeoutEnd = 240000;

	var blockReconnection = false;
	var lastInterval = networkTimeoutStart;

	var reconnect = function(code) {
		if (blockReconnection) return false;
		blockReconnection = true;
		if (code) {
			if (lastInterval > httpTimeoutEnd) {
				lastInterval = httpTimeoutStart;
			} else {
				lastInterval *= 2;
			}
		} else {
			if (lastInterval > networkTimeoutEnd) {
				lastInterval = networkTimeoutStart;
			} else {
				lastInterval += networkTimeoutStart;
			}
		}

		setTimeout(function() {
			blockReconnection = false;
			self.stream()

		}, lastInterval);

	}

	var emitment = function(req, code, err) {
		return {
			"request":req,
			"wrongCode":code,
			"error":err
		}
	}

	var jsonHandler = function(json) {
		try {
			self.emit("tweet", JSON.parse(json));
		} catch (error) {
			console.log("Error in Streamer parser:", error);
		}
	}

	self.on("reconnect", function(opt) {
		console.log("Reconnect:", (new Date()).toUTCString());
		if (opt.error) {
			console.log("Error:", opt.error);
		}
		opt.request.abort();
		reconnect(opt.wrongCode);
	});

	self.stream = function() {
		var request = oauth.request(reqConf, function(response) {
			response.setEncoding('utf8');
			console.log("STATUS:", response.statusCode);

			if (response.statusCode !== 200) {
				self.emit("reconnect", emitment(request, true));
			}

			response.on("data", function(chunk) {
				// console.log(chunk);
				parser(chunk, buffer, jsonHandler);
			});

			response.on("end", function() {
				self.emit("reconnect", emitment(request, false));
			});

			response.on("close", function() {
				self.emit("reconnect", emitment(request, false));
			});

			response.on("error", function(err) {
				self.emit("reconnect", emitment(request, false, err));
			});

		});

		request.write(reqConf.body);
		request.end();

		request.on("error", function(err) {
			self.emit("reconnect", emitment(request, false, err));
		});

		request.on("socket", function(socket) {
			var socket = socket.socket;
			socket.setTimeout(socketTimeout);
			socket.setKeepAlive(true);
			socket.on("timeout", function() {
				self.emit("reconnect", emitment(request, false));
			});
		});
	}
}