Sha256: 8ef41c8f25dd2cc7d928754a77a3b7ae2802047884bd14c5a02527464b5dd6f3

Contents?: true

Size: 1.48 KB

Versions: 35

Compression:

Stored size: 1.48 KB

Contents

var util = require('../util');

function JsonBuilder() { }

JsonBuilder.prototype.build = function(value, shape) {
  return JSON.stringify(translate(value, shape));
};

function translate(value, shape) {
  if (!shape || value === undefined || value === null) return undefined;

  switch (shape.type) {
    case 'structure': return translateStructure(value, shape);
    case 'map': return translateMap(value, shape);
    case 'list': return translateList(value, shape);
    default: return translateScalar(value, shape);
  }
}

function translateStructure(structure, shape) {
  var struct = {};
  util.each(structure, function(name, value) {
    var memberShape = shape.members[name];
    if (memberShape) {
      if (memberShape.location !== 'body') return;
      var locationName = memberShape.isLocationName ? memberShape.name : name;
      var result = translate(value, memberShape);
      if (result !== undefined) struct[locationName] = result;
    }
  });
  return struct;
}

function translateList(list, shape) {
  var out = [];
  util.arrayEach(list, function(value) {
    var result = translate(value, shape.member);
    if (result !== undefined) out.push(result);
  });
  return out;
}

function translateMap(map, shape) {
  var out = {};
  util.each(map, function(key, value) {
    var result = translate(value, shape.value);
    if (result !== undefined) out[key] = result;
  });
  return out;
}

function translateScalar(value, shape) {
  return shape.toWireFormat(value);
}

module.exports = JsonBuilder;

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/json/builder.js
sumomo-0.10.4 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.10.3 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.10.2 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.10.1 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.10.0 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.9.0 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.22 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.21 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.20 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.17 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.16 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.15 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.14 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.13 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.12 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.11 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.10 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.9 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js
sumomo-0.8.8 data/sumomo/api_modules/node_modules/aws-sdk/lib/json/builder.js