Skip to content

Instantly share code, notes, and snippets.

@jebai0521
Last active October 15, 2019 06:16
Show Gist options
  • Save jebai0521/46c682a19b94ba03f3b10d27d5b4daa6 to your computer and use it in GitHub Desktop.
Save jebai0521/46c682a19b94ba03f3b10d27d5b4daa6 to your computer and use it in GitHub Desktop.
lambda redirect by language while request origin
'use strict';
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const s3DomainName = 'static-jebai.s3.amazonaws.com';
const countryCode = request.headers['cloudfront-viewer-country'][0].value.toLowerCase();
const acceptLanguage = request.headers['accept-language'][0].value.toLowerCase();
const isDesktop = request.headers['cloudfront-is-desktop-viewer'][0].value;
const isMobile = request.headers['cloudfront-is-mobile-viewer'][0].value;
const isSmarttv = request.headers['cloudfront-is-smarttv-viewer'][0].value;
const isTablet = request.headers['cloudfront-is-tablet-viewer'][0].value;
console.log("acceptLanguages ==> ", acceptLanguage);
let language = "default";
if (acceptLanguage && acceptLanguage !== '*') {
const languages = acceptLanguage.split(',');
console.log("languages ==> ", languages);
if (languages && languages.length > 0) {
language = languages[0].toLowerCase();
}
}
console.log("language ==> ", language);
if (language.indexOf('en') == 0) {
language = 'en';
}
let device = "mobile";
if (isDesktop || isSmarttv) {
device = "desktop";
} else if (isTablet || isMobile) {
device = "mobile";
}
request.origin = {
s3: {
domainName: s3DomainName,
region: '',
authMethod: 'none',
path: `/${language}/${device}`,
customHeaders: {}
}
};
request.headers['host'] = [{ key: 'host', value: s3DomainName }];
callback(null, request);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment