Sha256: 2ae188a9736b5b4751f286acde8d8f9cbac30d09b28bbaf94af361dd02863bf0

Contents?: true

Size: 1.83 KB

Versions: 35

Compression:

Stored size: 1.83 KB

Contents

var util = require('./util');
var regionConfig = require('./region_config_data.json');

function generateRegionPrefix(region) {
  if (!region) return null;

  var parts = region.split('-');
  if (parts.length < 3) return null;
  return parts.slice(0, parts.length - 2).join('-') + '-*';
}

function derivedKeys(service) {
  var region = service.config.region;
  var regionPrefix = generateRegionPrefix(region);
  var endpointPrefix = service.api.endpointPrefix;

  return [
    [region, endpointPrefix],
    [regionPrefix, endpointPrefix],
    [region, '*'],
    [regionPrefix, '*'],
    ['*', endpointPrefix],
    ['*', '*']
  ].map(function(item) {
    return item[0] && item[1] ? item.join('/') : null;
  });
}

function applyConfig(service, config) {
  util.each(config, function(key, value) {
    if (key === 'globalEndpoint') return;
    if (service.config[key] === undefined || service.config[key] === null) {
      service.config[key] = value;
    }
  });
}

function configureEndpoint(service) {
  var keys = derivedKeys(service);
  for (var i = 0; i < keys.length; i++) {
    var key = keys[i];
    if (!key) continue;

    if (Object.prototype.hasOwnProperty.call(regionConfig.rules, key)) {
      var config = regionConfig.rules[key];
      if (typeof config === 'string') {
        config = regionConfig.patterns[config];
      }

      // set dualstack endpoint
      if (service.config.useDualstack && util.isDualstackAvailable(service)) {
        config = util.copy(config);
        config.endpoint = '{service}.dualstack.{region}.amazonaws.com';
      }

      // set global endpoint
      service.isGlobalEndpoint = !!config.globalEndpoint;

      // signature version
      if (!config.signatureVersion) config.signatureVersion = 'v4';

      // merge config
      applyConfig(service, config);
      return;
    }
  }
}

module.exports = configureEndpoint;

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
sumomo-0.10.8 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.10.4 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.10.3 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.10.2 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.10.1 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.10.0 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.9.0 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.22 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.21 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.20 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.17 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.16 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.15 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.14 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.13 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.12 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.11 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.10 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.9 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js
sumomo-0.8.8 data/sumomo/api_modules/node_modules/aws-sdk/lib/region_config.js