Guest User

Untitled

a guest
Dec 3rd, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. require('isomorphic-fetch');
  2. const AUTH_TYPE = require('aws-appsync/lib/link/auth-link').AUTH_TYPE;
  3. const AWSAppSyncClient = require('aws-appsync').default;
  4. const AmazonCognitoIdentity = require('amazon-cognito-identity-js');
  5. const gql = require('graphql-tag');
  6.  
  7. const listMessages = gql(`
  8. query getConversationMessages($conversationId: ID!, $after: String, $first: Int) {
  9. allMessageConnection(conversationId: $conversationId, after: $after, first: $first) {
  10. __typename
  11. nextToken,
  12. messages {
  13. __typename
  14. id
  15. conversationId
  16. content
  17. createdAt
  18. sender
  19. isSent
  20. }
  21. }
  22. }`);
  23.  
  24. exports.handler = async (event) => {
  25. const poolData = {
  26. UserPoolId: process.env['USERPOOL_ID'],
  27. ClientId: process.env['CLIENT_ID']
  28. };
  29. const userData = {
  30. Username: process.env['USERNAME'],
  31. Pool: new AmazonCognitoIdentity.CognitoUserPool(poolData)
  32. };
  33. const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
  34.  
  35. const authenticationData = {
  36. Username: userData.Username,
  37. Password: process.env['PASSWORD']
  38. };
  39. const authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
  40.  
  41. const authenticateUser = new Promise((resolve, reject) => {
  42. cognitoUser.authenticateUser(authenticationDetails, {
  43. onSuccess: (result) => {
  44. const idToken = result.getIdToken().getJwtToken();
  45. resolve(idToken);
  46. },
  47. onFailure: (err) => {
  48. reject(err);
  49. },
  50. newPasswordRequired: (userAttributes, requiredAttributes) => {
  51. const err = new Error("newPasswordRequired");
  52. reject(err);
  53. }
  54. });
  55. });
  56.  
  57. return authenticateUser.then(async (idToken) => {
  58. const client = new AWSAppSyncClient({
  59. url: process.env['URL'],
  60. region: process.env['REGION'],
  61. auth: {
  62. type: AUTH_TYPE.AMAZON_COGNITO_USER_POOLS,
  63. jwtToken: idToken
  64. },
  65. disableOffline: true
  66. });
  67.  
  68. const param = {
  69. conversationId: "hello",
  70. after: null,
  71. first: 20
  72. };
  73.  
  74. const result = await client.query({
  75. query: listMessages,
  76. variables: param,
  77. fetchPolicy: 'network-only'
  78. });
  79. console.log(JSON.stringify(result));
  80. return result;
  81. }).catch((err) => {
  82. console.log(JSON.stringify(err));
  83. return err;
  84. });
  85.  
  86. };
Add Comment
Please, Sign In to add comment