Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

34 linhas
964 B

  1. var crypto = require('crypto')
  2. , qs = require('querystring')
  3. ;
  4. function sha1 (key, body) {
  5. return crypto.createHmac('sha1', key).update(body).digest('base64')
  6. }
  7. function rfc3986 (str) {
  8. return encodeURIComponent(str)
  9. .replace('!','%21')
  10. .replace('*','%2A')
  11. .replace('(','%28')
  12. .replace(')','%29')
  13. .replace("'",'%27')
  14. ;
  15. }
  16. function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret, body) {
  17. // adapted from https://dev.twitter.com/docs/auth/oauth
  18. var base =
  19. (httpMethod || 'GET') + "&" +
  20. encodeURIComponent( base_uri ) + "&" +
  21. Object.keys(params).sort().map(function (i) {
  22. // big WTF here with the escape + encoding but it's what twitter wants
  23. return escape(rfc3986(i)) + "%3D" + escape(rfc3986(params[i]))
  24. }).join("%26")
  25. var key = consumer_secret + '&'
  26. if (token_secret) key += token_secret
  27. return sha1(key, base)
  28. }
  29. exports.hmacsign = hmacsign
  30. exports.rfc3986 = rfc3986