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
.