seagull-js/seagull

View on GitHub
packages/deploy-aws/src/aws_sdk_handler/handle_cloudfront.ts

Summary

Maintainability
A
50 mins
Test Coverage
import { CloudFront, config } from 'aws-sdk'

export async function getCFURL(name: string, handler: CloudfrontHandler) {
  const cloudfronts = await handler.listDistributions()
  const cloudfront = cloudfronts.find(dist => dist.Comment === name)
  return cloudfront && cloudfront.DomainName
}

export class CloudfrontHandler {
  private cloudfront: CloudFront

  constructor() {
    const { credentials, region } = config
    this.cloudfront = new CloudFront({ credentials, region })
  }

  async listDistributions() {
    const cloudfronts = await this.cloudfront.listDistributions().promise()
    const distributionList = cloudfronts.DistributionList
    return (distributionList && distributionList.Items) || []
  }
}