Nefarious Planetary Meddling

    hapiest-cloudfront-url

    0.0.5 • Public • Published

    Install

    npm install --save hapiest-cloudfront-url

    Basic usage

    I highly recommend you use this with node-config if possible though it's not a requirement.

    With node-config

    Include a config section that adheres to the following (assuming JSON format):

    {
        "myCloudfrontDistribution": {
          "cloudfrontDomainName": "somedomain.cloudfront.net",
          "enabled": "true",
          "origins": [{
            "host": "mybucket.s3.amazonaws.com",
            "path": "/public"
          },{
            "host": "www.mysite.com",
            "path": "my/crazy/path"
          },{
            "host": "localhost",
            "port": 3000,
            "path": "localstorage/bucket/public"
          }]
        }
    }

    You then simply use the createFromNodeConfig function provided:

    const NodeConfig = require('config');
    const CfUrlServiceFactory = require('hapiest-cloudfront-url');
    const cfUrlService = CfUrlServiceFactory.createFromNodeConfig(NodeConfig, 'myCloudfrontDistribution');
    

    Without node-config

    const CfUrlServiceFactory = require('hapiest-cloudfront-url');
    const cfUrlService = CfUrlServiceFactory.create({
        cloudfrontDomainName: 'somedomain.cloudfront.net',
        enabled: true,
        origins: [{
            host: 'mybucket.s3.amazonaws.com',
            path: '/public'
        },{
            host: 'www.mysite.com',
            path: 'my/crazy/path'
        },{
            host: 'localhost',
            port: 3000,
            path: 'localstorage/bucket/public'
        }]
    });
    

    Converting an origin URL to Cloudfront URL

    When the originUrl provided the convertUrl function matches one of the URLs associated with the distribution, the return value is a URL relative to the Cloudfront domain.

    const originUrl = 'http://mybucket.s3.amazonaws.com/public/images/image.jpg';
    const cfUrl = cfUrlService.convertUrl(originUrl);
    // http://somedomain.cloudfront.net/images/image.jpg
    
    const originUrl2 = 'https://www.mysite.com/my/crazy/path/something.txt';
    const cfUrl2 = cfUrlService.convertUrl(originUrl2);
    // https://somedomain.cloudfront.net/something.txt
    
    const originUrl3 = 'http://localhost:3000/localstorage/bucket/public/images/thumb.jpg'
    const cfUrl3 = cfUrlService.convertUrl(originUrl3);
    // http://somedomain.cloudfront.net/images/thumb.jpg
    

    If the provided URL does not match an origin, the provided URL is simply returned:

    const originalUrl = 'http://www.someothersite.com/does/not/match/an/origin.jpg';
    const cfUrl = cfUrlService.convertUrl(originUrl);
    // 'http://www.someothersite.com/does/not/match/an/origin.jpg'
    

    When enabled=false, convertUrl always returns the original URL though you can override that behavior by passing in a second parameter of true.

    Install

    npm i hapiest-cloudfront-url

    DownloadsWeekly Downloads

    3

    Version

    0.0.5

    License

    ISC

    Last publish

    Collaborators

    • jonathanfulton
    • njgerner