twitter.js 6.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. "use strict";
  2. // Helper functions for accessing the twitter API.
  3. var OAuth = require('./OAuth1Client');
  4. var Parse = require('parse/node').Parse;
  5. // Returns a promise that fulfills iff this user id is valid.
  6. function validateAuthData(authData, options) {
  7. if (!options) {
  8. throw new Parse.Error(Parse.Error.INTERNAL_SERVER_ERROR, 'Twitter auth configuration missing');
  9. }
  10. options = handleMultipleConfigurations(authData, options);
  11. var client = new OAuth(options);
  12. client.host = 'api.twitter.com';
  13. client.auth_token = authData.auth_token;
  14. client.auth_token_secret = authData.auth_token_secret;
  15. return client.get('/1.1/account/verify_credentials.json').then(data => {
  16. if (data && data.id_str == '' + authData.id) {
  17. return;
  18. }
  19. throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Twitter auth is invalid for this user.');
  20. });
  21. }
  22. // Returns a promise that fulfills iff this app id is valid.
  23. function validateAppId() {
  24. return Promise.resolve();
  25. }
  26. function handleMultipleConfigurations(authData, options) {
  27. if (Array.isArray(options)) {
  28. const consumer_key = authData.consumer_key;
  29. if (!consumer_key) {
  30. throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Twitter auth is invalid for this user.');
  31. }
  32. options = options.filter(option => {
  33. return option.consumer_key == consumer_key;
  34. });
  35. if (options.length == 0) {
  36. throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Twitter auth is invalid for this user.');
  37. }
  38. options = options[0];
  39. }
  40. return options;
  41. }
  42. module.exports = {
  43. validateAppId,
  44. validateAuthData,
  45. handleMultipleConfigurations
  46. };
  47. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPQXV0aCIsInJlcXVpcmUiLCJQYXJzZSIsInZhbGlkYXRlQXV0aERhdGEiLCJhdXRoRGF0YSIsIm9wdGlvbnMiLCJFcnJvciIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsImhhbmRsZU11bHRpcGxlQ29uZmlndXJhdGlvbnMiLCJjbGllbnQiLCJob3N0IiwiYXV0aF90b2tlbiIsImF1dGhfdG9rZW5fc2VjcmV0IiwiZ2V0IiwidGhlbiIsImRhdGEiLCJpZF9zdHIiLCJpZCIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJBcnJheSIsImlzQXJyYXkiLCJjb25zdW1lcl9rZXkiLCJmaWx0ZXIiLCJvcHRpb24iLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvdHdpdHRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgdGhlIHR3aXR0ZXIgQVBJLlxudmFyIE9BdXRoID0gcmVxdWlyZSgnLi9PQXV0aDFDbGllbnQnKTtcbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZmYgdGhpcyB1c2VyIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnVHdpdHRlciBhdXRoIGNvbmZpZ3VyYXRpb24gbWlzc2luZycpO1xuICB9XG4gIG9wdGlvbnMgPSBoYW5kbGVNdWx0aXBsZUNvbmZpZ3VyYXRpb25zKGF1dGhEYXRhLCBvcHRpb25zKTtcbiAgdmFyIGNsaWVudCA9IG5ldyBPQXV0aChvcHRpb25zKTtcbiAgY2xpZW50Lmhvc3QgPSAnYXBpLnR3aXR0ZXIuY29tJztcbiAgY2xpZW50LmF1dGhfdG9rZW4gPSBhdXRoRGF0YS5hdXRoX3Rva2VuO1xuICBjbGllbnQuYXV0aF90b2tlbl9zZWNyZXQgPSBhdXRoRGF0YS5hdXRoX3Rva2VuX3NlY3JldDtcblxuICByZXR1cm4gY2xpZW50LmdldCgnLzEuMS9hY2NvdW50L3ZlcmlmeV9jcmVkZW50aWFscy5qc29uJykudGhlbihkYXRhID0+IHtcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmlkX3N0ciA9PSAnJyArIGF1dGhEYXRhLmlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnVHdpdHRlciBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWZmIHRoaXMgYXBwIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBcHBJZCgpIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNdWx0aXBsZUNvbmZpZ3VyYXRpb25zKGF1dGhEYXRhLCBvcHRpb25zKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgY29uc3QgY29uc3VtZXJfa2V5ID0gYXV0aERhdGEuY29uc3VtZXJfa2V5O1xuICAgIGlmICghY29uc3VtZXJfa2V5KSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ1R3aXR0ZXIgYXV0aCBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJyk7XG4gICAgfVxuICAgIG9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcihvcHRpb24gPT4ge1xuICAgICAgcmV0dXJuIG9wdGlvbi5jb25zdW1lcl9rZXkgPT0gY29uc3VtZXJfa2V5O1xuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoID09IDApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnVHdpdHRlciBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnNbMF07XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB2YWxpZGF0ZUFwcElkLFxuICB2YWxpZGF0ZUF1dGhEYXRhLFxuICBoYW5kbGVNdWx0aXBsZUNvbmZpZ3VyYXRpb25zLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0FBQ3JDLElBQUlDLEtBQUssR0FBR0QsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDQyxLQUFLOztBQUV2QztBQUNBLFNBQVNDLGdCQUFnQkEsQ0FBQ0MsUUFBUSxFQUFFQyxPQUFPLEVBQUU7RUFDM0MsSUFBSSxDQUFDQSxPQUFPLEVBQUU7SUFDWixNQUFNLElBQUlILEtBQUssQ0FBQ0ksS0FBSyxDQUFDSixLQUFLLENBQUNJLEtBQUssQ0FBQ0MscUJBQXFCLEVBQUUsb0NBQW9DLENBQUM7RUFDaEc7RUFDQUYsT0FBTyxHQUFHRyw0QkFBNEIsQ0FBQ0osUUFBUSxFQUFFQyxPQUFPLENBQUM7RUFDekQsSUFBSUksTUFBTSxHQUFHLElBQUlULEtBQUssQ0FBQ0ssT0FBTyxDQUFDO0VBQy9CSSxNQUFNLENBQUNDLElBQUksR0FBRyxpQkFBaUI7RUFDL0JELE1BQU0sQ0FBQ0UsVUFBVSxHQUFHUCxRQUFRLENBQUNPLFVBQVU7RUFDdkNGLE1BQU0sQ0FBQ0csaUJBQWlCLEdBQUdSLFFBQVEsQ0FBQ1EsaUJBQWlCO0VBRXJELE9BQU9ILE1BQU0sQ0FBQ0ksR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUNDLElBQUksQ0FBQ0MsSUFBSSxJQUFJO0lBQ3JFLElBQUlBLElBQUksSUFBSUEsSUFBSSxDQUFDQyxNQUFNLElBQUksRUFBRSxHQUFHWixRQUFRLENBQUNhLEVBQUUsRUFBRTtNQUMzQztJQUNGO0lBQ0EsTUFBTSxJQUFJZixLQUFLLENBQUNJLEtBQUssQ0FBQ0osS0FBSyxDQUFDSSxLQUFLLENBQUNZLGdCQUFnQixFQUFFLHdDQUF3QyxDQUFDO0VBQy9GLENBQUMsQ0FBQztBQUNKOztBQUVBO0FBQ0EsU0FBU0MsYUFBYUEsQ0FBQSxFQUFHO0VBQ3ZCLE9BQU9DLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUM7QUFDMUI7QUFFQSxTQUFTYiw0QkFBNEJBLENBQUNKLFFBQVEsRUFBRUMsT0FBTyxFQUFFO0VBQ3ZELElBQUlpQixLQUFLLENBQUNDLE9BQU8sQ0FBQ2xCLE9BQU8sQ0FBQyxFQUFFO0lBQzFCLE1BQU1tQixZQUFZLEdBQUdwQixRQUFRLENBQUNvQixZQUFZO0lBQzFDLElBQUksQ0FBQ0EsWUFBWSxFQUFFO01BQ2pCLE1BQU0sSUFBSXRCLEtBQUssQ0FBQ0ksS0FBSyxDQUFDSixLQUFLLENBQUNJLEtBQUssQ0FBQ1ksZ0JBQWdCLEVBQUUsd0NBQXdDLENBQUM7SUFDL0Y7SUFDQWIsT0FBTyxHQUFHQSxPQUFPLENBQUNvQixNQUFNLENBQUNDLE1BQU0sSUFBSTtNQUNqQyxPQUFPQSxNQUFNLENBQUNGLFlBQVksSUFBSUEsWUFBWTtJQUM1QyxDQUFDLENBQUM7SUFFRixJQUFJbkIsT0FBTyxDQUFDc0IsTUFBTSxJQUFJLENBQUMsRUFBRTtNQUN2QixNQUFNLElBQUl6QixLQUFLLENBQUNJLEtBQUssQ0FBQ0osS0FBSyxDQUFDSSxLQUFLLENBQUNZLGdCQUFnQixFQUFFLHdDQUF3QyxDQUFDO0lBQy9GO0lBQ0FiLE9BQU8sR0FBR0EsT0FBTyxDQUFDLENBQUMsQ0FBQztFQUN0QjtFQUNBLE9BQU9BLE9BQU87QUFDaEI7QUFFQXVCLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHO0VBQ2ZWLGFBQWE7RUFDYmhCLGdCQUFnQjtFQUNoQks7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119