git-off

git off handles large files in git repos
git clone https://noulin.net/git/git-off.git
Log | Files | Refs | README

region_config.js (1872B)


      1 var util = require('./util');
      2 var regionConfig = require('./region_config.json');
      3 
      4 function generateRegionPrefix(region) {
      5   if (!region) return null;
      6 
      7   var parts = region.split('-');
      8   if (parts.length < 3) return null;
      9   return parts.slice(0, parts.length - 2).join('-') + '-*';
     10 }
     11 
     12 function derivedKeys(service) {
     13   var region = service.config.region;
     14   var regionPrefix = generateRegionPrefix(region);
     15   var endpointPrefix = service.api.endpointPrefix;
     16 
     17   return [
     18     [region, endpointPrefix],
     19     [regionPrefix, endpointPrefix],
     20     [region, '*'],
     21     [regionPrefix, '*'],
     22     ['*', endpointPrefix],
     23     ['*', '*']
     24   ].map(function(item) {
     25     return item[0] && item[1] ? item.join('/') : null;
     26   });
     27 }
     28 
     29 function applyConfig(service, config) {
     30   util.each(config, function(key, value) {
     31     if (key === 'globalEndpoint') return;
     32     if (service.config[key] === undefined || service.config[key] === null) {
     33       service.config[key] = value;
     34     }
     35   });
     36 }
     37 
     38 function configureEndpoint(service) {
     39   var keys = derivedKeys(service);
     40   for (var i = 0; i < keys.length; i++) {
     41     var key = keys[i];
     42     if (!key) continue;
     43 
     44     if (Object.prototype.hasOwnProperty.call(regionConfig.rules, key)) {
     45       var config = regionConfig.rules[key];
     46       if (typeof config === 'string') {
     47         config = regionConfig.patterns[config];
     48       }
     49 
     50       // set dualstack endpoint
     51       if (service.config.useDualstack && util.isDualstackAvailable(service)) {
     52         config = util.copy(config);
     53         config.endpoint = '{service}.dualstack.{region}.amazonaws.com';
     54       }
     55 
     56       // set global endpoint
     57       service.isGlobalEndpoint = !!config.globalEndpoint;
     58 
     59       // signature version
     60       if (!config.signatureVersion) config.signatureVersion = 'v4';
     61 
     62       // merge config
     63       applyConfig(service, config);
     64       return;
     65     }
     66   }
     67 }
     68 
     69 module.exports = configureEndpoint;