description and source-codeformatQueryParams = function (query, method, credentials) {
var params = {};
// format query keys
for (var param in query) {
var capitalized = capitalize(param);
params[capitalized] = query[param];
}
if (method === 'ItemSearch') {
// Default
params = setDefaultParams(params, {
SearchIndex: 'All',
Condition: 'All',
ResponseGroup: 'ItemAttributes',
Keywords: '',
ItemPage: '1'
});
} else if (method === 'ItemLookup') {
// Default
params = setDefaultParams(params, {
SearchIndex: 'All',
Condition: 'All',
ResponseGroup: 'ItemAttributes',
IdType: 'ASIN',
IncludeReviewsSummary: 'True',
TruncateReviewsAt: '1000',
VariationPage: 'All'
});
// Constraints
// If ItemId is an ASIN (specified by IdType), a search index cannot be specified in the request.
if (params['IdType'] === 'ASIN') {
delete params['SearchIndex'];
}
} else if (method === 'BrowseNodeLookup') {
// Default
params = setDefaultParams(params, {
BrowseNodeId: '',
ResponseGroup: 'BrowseNodeInfo'
});
}
// Constants
params['Version'] = '2013-08-01';
// Common params
params['AWSAccessKeyId'] = credentials.awsId;
// awsTag is associated with domain, so it ought to be defineable in query.
params['AssociateTag'] = query.awsTag || credentials.awsTag;
params['Timestamp'] = new Date().toISOString();
params['Service'] = 'AWSECommerceService';
params['Operation'] = method;
// sort
params = sort(params);
return params;
}