hapiest-cloudfront-url
Version:
Maps origin URLs to an AWS Cloudfront distribution URL
90 lines (72 loc) • 2.74 kB
Markdown
```npm install --save hapiest-cloudfront-url```
I highly recommend you use this with [node-config](https://github.com/lorenwest/node-config) if possible though it's not a requirement.
Include a config section that adheres to the following (assuming JSON format):
```JSON
{
"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');
```
```
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'
}]
});
```
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```.