Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require('isomorphic-fetch');
- const AUTH_TYPE = require('aws-appsync/lib/link/auth-link').AUTH_TYPE;
- const AWSAppSyncClient = require('aws-appsync').default;
- const AmazonCognitoIdentity = require('amazon-cognito-identity-js');
- const gql = require('graphql-tag');
- const listMessages = gql(`
- query getConversationMessages($conversationId: ID!, $after: String, $first: Int) {
- allMessageConnection(conversationId: $conversationId, after: $after, first: $first) {
- __typename
- nextToken,
- messages {
- __typename
- id
- conversationId
- content
- createdAt
- sender
- isSent
- }
- }
- }`);
- exports.handler = async (event) => {
- const poolData = {
- UserPoolId: process.env['USERPOOL_ID'],
- ClientId: process.env['CLIENT_ID']
- };
- const userData = {
- Username: process.env['USERNAME'],
- Pool: new AmazonCognitoIdentity.CognitoUserPool(poolData)
- };
- const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
- const authenticationData = {
- Username: userData.Username,
- Password: process.env['PASSWORD']
- };
- const authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
- const authenticateUser = new Promise((resolve, reject) => {
- cognitoUser.authenticateUser(authenticationDetails, {
- onSuccess: (result) => {
- const idToken = result.getIdToken().getJwtToken();
- resolve(idToken);
- },
- onFailure: (err) => {
- reject(err);
- },
- newPasswordRequired: (userAttributes, requiredAttributes) => {
- const err = new Error("newPasswordRequired");
- reject(err);
- }
- });
- });
- return authenticateUser.then(async (idToken) => {
- const client = new AWSAppSyncClient({
- url: process.env['URL'],
- region: process.env['REGION'],
- auth: {
- type: AUTH_TYPE.AMAZON_COGNITO_USER_POOLS,
- jwtToken: idToken
- },
- disableOffline: true
- });
- const param = {
- conversationId: "hello",
- after: null,
- first: 20
- };
- const result = await client.query({
- query: listMessages,
- variables: param,
- fetchPolicy: 'network-only'
- });
- console.log(JSON.stringify(result));
- return result;
- }).catch((err) => {
- console.log(JSON.stringify(err));
- return err;
- });
- };
Add Comment
Please, Sign In to add comment