Sha256: 9c4b77f340b4fc23f5eb9e2c6ca68ccc1a0a26f4c233e3b38a49eb97af40c794

Contents?: true

Size: 1.98 KB

Versions: 35

Compression:

Stored size: 1.98 KB

Contents

var Shape = require('./shape');

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

function Operation(name, operation, options) {
  var self = this;
  options = options || {};

  property(this, 'name', operation.name || name);
  property(this, 'api', options.api, false);

  operation.http = operation.http || {};
  property(this, 'httpMethod', operation.http.method || 'POST');
  property(this, 'httpPath', operation.http.requestUri || '/');
  property(this, 'authtype', operation.authtype || '');

  memoizedProperty(this, 'input', function() {
    if (!operation.input) {
      return new Shape.create({type: 'structure'}, options);
    }
    return Shape.create(operation.input, options);
  });

  memoizedProperty(this, 'output', function() {
    if (!operation.output) {
      return new Shape.create({type: 'structure'}, options);
    }
    return Shape.create(operation.output, options);
  });

  memoizedProperty(this, 'errors', function() {
    var list = [];
    if (!operation.errors) return null;

    for (var i = 0; i < operation.errors.length; i++) {
      list.push(Shape.create(operation.errors[i], options));
    }

    return list;
  });

  memoizedProperty(this, 'paginator', function() {
    return options.api.paginators[name];
  });

  if (options.documentation) {
    property(this, 'documentation', operation.documentation);
    property(this, 'documentationUrl', operation.documentationUrl);
  }

  // idempotentMembers only tracks top-level input shapes
  memoizedProperty(this, 'idempotentMembers', function() {
    var idempotentMembers = [];
    var input = self.input;
    var members = input.members;
    if (!input.members) {
      return idempotentMembers;
    }
    for (var name in members) {
      if (!members.hasOwnProperty(name)) {
        continue;
      }
      if (members[name].isIdempotent === true) {
        idempotentMembers.push(name);
      }
    }
    return idempotentMembers;
  });

}

module.exports = Operation;

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