Created
September 29, 2014 20:01
-
-
Save alanhoff/cc31ac3b3395e4bf8574 to your computer and use it in GitHub Desktop.
Fazendo requests com jar global e jar individual
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var request = require('./request-helper'); | |
// Fazer uma requisição utilizando a jar global, que é compartilhada | |
// em todo o Node.js que está rodando | |
request.global({ | |
url: 'https://google.com.br' | |
}, function(err, res, body){ | |
if(err) | |
throw err; | |
console.log('Google respondeu com status %s', res.statusCode); | |
}); | |
// As próximas requisições feitas com o request.global usarão os cookies | |
// recebidos pelo Google, e assim com todas as outras requisições. | |
// Para limpar os cookies globais, basta usar: | |
request.clearGlobalCookies(); | |
// Para fazer uma requisição usando uma jar individual, chamamos o request.single | |
var user = request.single(); | |
// Agora a variável user possui uma jar somente dela, individual. Outras instâncias | |
// de request.single também terão jars individuais | |
user.request({ | |
url: 'https://twitter.com' | |
}, function(err, res, body){ | |
if(err) | |
throw err; | |
console.log('Twitter respondeu com status %s', res.statusCode); | |
}); | |
// Para limpar os cookies de uma request individual basta chamar | |
user.clearCookies(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var request = require('request'); | |
// Jar global onde ficarão armazenados os cookies | |
var defaultJar = request.jar(); | |
/** | |
* Faz uma requisição com a jar global. | |
* | |
* @example | |
* | |
* ```javascript | |
* var request = require('./lib/request-helper.js'); | |
* request.global({ | |
* url: 'http://google.com.br' | |
* }, function(err, res, body){ | |
* if(err) | |
* throw err; | |
* | |
* console.log('Google respondeu com status %s', res.statusCode); | |
* }); | |
* | |
* // Obs, as demais requisições manterão os mesmos cookies recebidos | |
* // pelo Google | |
* ``` | |
* | |
* @param {Object} options Um objeto de configuração do request.js | |
* @param {Function} callback O callback de retorno da requisição, que irá | |
* receber error, response e body. | |
*/ | |
exports.global = function(options, callback){ | |
var opts = { | |
jar: defaultJar | |
}; | |
// Faz a extenção das opção que você passou | |
if(options) | |
Object.keys(options).forEach(function(k){ | |
opts[k] = options[k]; | |
}); | |
// Realisa a request | |
request(opts, callback); | |
}; | |
/** | |
* Faz uma requisição com uma jar específica que é criada no instante que | |
* request.sinle() é chamado. | |
* | |
* @example | |
* | |
* ```javascript | |
* var request = require('./lib/request-helper.js'); | |
* | |
* // Criar uma instância única | |
* var user = request.single(); | |
* | |
* // Realizar uma requisição | |
* user.request({ | |
* url: 'http://google.com.br' | |
* }, function(err, res, body){ | |
* if(err) | |
* throw err; | |
* | |
* console.log('Google respondeu com status %s', res.statusCode); | |
* }); | |
* | |
* // Limpar os cookies desta instância | |
* user.clearCookies(); | |
* ``` | |
* @returns {Object} Um objeto contendo .request() e clearCookies() | |
*/ | |
exports.single = function(){ | |
// Instância desta requisição | |
var singleJar = request.jar(); | |
return { | |
/** | |
* Realiza uma request usando uma jar de uma instância única | |
* | |
* @param {Object} options Um objeto de configuração do request.js | |
* @param {Function} callback O callback de retorno da requisição, que irá | |
* receber error, response e body. | |
*/ | |
request: function(options, callback){ | |
var opts = { | |
jar: singleJar | |
}; | |
// Faz a extenção das opção que você passou | |
if(options) | |
Object.keys(options).forEach(function(k){ | |
opts[k] = options[k]; | |
}); | |
// Realisa a request | |
request(opts, callback); | |
}, | |
/** | |
* Limpa os cookies desta instância | |
*/ | |
clearCookies: function(){ | |
singleJar = request.jar(); | |
} | |
}; | |
}; | |
/** | |
* Limpa os cookies globais | |
*/ | |
exports.clearGlobalCookies = function(){ | |
defaultJar = request.jar(); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment