mirror of https://github.com/docker/docs.git
				
				
				
			
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 'use strict';
 | |
| 
 | |
| exports.handler = (event, context, callback) => {
 | |
|     //console.log("event", JSON.stringify(event));
 | |
|     const request = event.Records[0].cf.request;
 | |
|     const requestUrl = request.uri.replace(/\/$/, "")
 | |
| 
 | |
|     const redirects = JSON.parse(`{{.RedirectsJSON}}`);
 | |
|     for (let key in redirects) {
 | |
|         const redirectTarget = key.replace(/\/$/, "")
 | |
|         if (redirectTarget !== requestUrl) {
 | |
|             continue;
 | |
|         }
 | |
|         //console.log(`redirect: ${requestUrl} to ${redirects[key]}`);
 | |
|         const response = {
 | |
|             status: '301',
 | |
|             statusDescription: 'Moved Permanently',
 | |
|             headers: {
 | |
|                 location: [{
 | |
|                     key: 'Location',
 | |
|                     value: redirects[key],
 | |
|                 }],
 | |
|             },
 | |
|         }
 | |
|         callback(null, response);
 | |
|         return
 | |
|     }
 | |
| 
 | |
|     const redirectsPrefixes = JSON.parse(`{{.RedirectsPrefixesJSON}}`);
 | |
|     for (let x in redirectsPrefixes) {
 | |
|         const rp = redirectsPrefixes[x];
 | |
|         if (!request.uri.startsWith(`/${rp['prefix']}`)) {
 | |
|             continue;
 | |
|         }
 | |
|         let newlocation = "/";
 | |
|         if (rp['strip']) {
 | |
|             let re = new RegExp(`(^/${rp['prefix']})`, 'gi');
 | |
|             newlocation = request.uri.replace(re,'/');
 | |
|         }
 | |
|         //console.log(`redirect: ${request.uri} to ${redirectsPrefixes[key]}`);
 | |
|         const response = {
 | |
|             status: '301',
 | |
|             statusDescription: 'Moved Permanently',
 | |
|             headers: {
 | |
|                 location: [{
 | |
|                     key: 'Location',
 | |
|                     value: newlocation,
 | |
|                 }],
 | |
|             },
 | |
|         }
 | |
|         callback(null, response);
 | |
|         return
 | |
|     }
 | |
| 
 | |
|     callback(null, request);
 | |
| };
 |