1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- var Collection = require('./collection');
- var Operation = require('./operation');
- var Shape = require('./shape');
- var Paginator = require('./paginator');
- var ResourceWaiter = require('./resource_waiter');
- var metadata = require('../../apis/metadata.json');
- var util = require('../util');
- var property = util.property;
- var memoizedProperty = util.memoizedProperty;
- function Api(api, options) {
- var self = this;
- api = api || {};
- options = options || {};
- options.api = this;
- api.metadata = api.metadata || {};
- var serviceIdentifier = options.serviceIdentifier;
- delete options.serviceIdentifier;
- property(this, 'isApi', true, false);
- property(this, 'apiVersion', api.metadata.apiVersion);
- property(this, 'endpointPrefix', api.metadata.endpointPrefix);
- property(this, 'signingName', api.metadata.signingName);
- property(this, 'globalEndpoint', api.metadata.globalEndpoint);
- property(this, 'signatureVersion', api.metadata.signatureVersion);
- property(this, 'jsonVersion', api.metadata.jsonVersion);
- property(this, 'targetPrefix', api.metadata.targetPrefix);
- property(this, 'protocol', api.metadata.protocol);
- property(this, 'timestampFormat', api.metadata.timestampFormat);
- property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace);
- property(this, 'abbreviation', api.metadata.serviceAbbreviation);
- property(this, 'fullName', api.metadata.serviceFullName);
- property(this, 'serviceId', api.metadata.serviceId);
- if (serviceIdentifier && metadata[serviceIdentifier]) {
- property(this, 'xmlNoDefaultLists', metadata[serviceIdentifier].xmlNoDefaultLists, false);
- }
- memoizedProperty(this, 'className', function() {
- var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName;
- if (!name) return null;
- name = name.replace(/^Amazon|AWS\s*|\(.*|\s+|\W+/g, '');
- if (name === 'ElasticLoadBalancing') name = 'ELB';
- return name;
- });
- function addEndpointOperation(name, operation) {
- if (operation.endpointoperation === true) {
- property(self, 'endpointOperation', util.string.lowerFirst(name));
- }
- if (operation.endpointdiscovery && !self.hasRequiredEndpointDiscovery) {
- property(
- self,
- 'hasRequiredEndpointDiscovery',
- operation.endpointdiscovery.required === true
- );
- }
- }
- property(this, 'operations', new Collection(api.operations, options, function(name, operation) {
- return new Operation(name, operation, options);
- }, util.string.lowerFirst, addEndpointOperation));
- property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) {
- return Shape.create(shape, options);
- }));
- property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) {
- return new Paginator(name, paginator, options);
- }));
- property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) {
- return new ResourceWaiter(name, waiter, options);
- }, util.string.lowerFirst));
- if (options.documentation) {
- property(this, 'documentation', api.documentation);
- property(this, 'documentationUrl', api.documentationUrl);
- }
- property(this, 'awsQueryCompatible', api.metadata.awsQueryCompatible);
- }
- /**
- * @api private
- */
- module.exports = Api;
|