export function toRequestData()

in aws-core-ui/src/Utilities/postConnection.ts [10:66]


export function toRequestData(config: Config, data: FormFields) {
  const res = Object.keys(data).reduce<{
    [p: string]: string | null;
  }>(
    (acc, key) => {
      const value = data[key as FormFieldsKey];

      if (value !== null && value !== undefined) {
        switch (key) {
          case FormFieldsNames.AWS_SECRET_ACCESSKEY:
            const val = value.toString();
            //hasn't changed, just pass what we got earlier back
            if (val === PASSWORD_STUB) {
              acc[key] = config.secretAccessKey;
            } else {
              acc[key] = encodeSecret(val, config.publicKey);
            }
            break;
          default:
            if (typeof value === 'string') acc[key] = value;
            else if (typeof value === 'boolean') acc[key] = value.toString();
            else if (typeof value === 'object') acc[key] = value.key;
            break;
        }
      } else {
        acc[key] = null;
      }
      return acc;
    },
    {
      projectId: config.projectId,
      saveConnection: 'save',
      providerType: awsProviderKey,
    }
  );

  const credType = res[FormFieldsNames.AWS_CREDENTIALS_TYPE];

  switch (credType) {
    case AwsCredentialsType.ACCESS_KEYS.toString():
      res[FormFieldsNames.AWS_IAM_ROLE_ARN] = null;
      res[FormFieldsNames.AWS_CONNECTION_ID] = null;
      break;
    case AwsCredentialsType.IAM_ROLE.toString():
      res[FormFieldsNames.AWS_ACCESSKEY_ID] = null;
      res[FormFieldsNames.AWS_SECRET_ACCESSKEY] = null;
      break;
    default:
      res[FormFieldsNames.AWS_ACCESSKEY_ID] = null;
      res[FormFieldsNames.AWS_SECRET_ACCESSKEY] = null;
      res[FormFieldsNames.AWS_IAM_ROLE_ARN] = null;
      res[FormFieldsNames.AWS_CONNECTION_ID] = null;
      break;
  }

  return res;
}