set-s3-expires-string.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /**
  2. * Sets model overrides for S3 ExpiresString.
  3. */
  4. module.exports = function setS3ExpiresString(model) {
  5. if (model.metadata.serviceId === 'S3') {
  6. var newShapes = {};
  7. for (var shapeId in model.shapes) {
  8. newShapes[shapeId] = model.shapes[shapeId];
  9. if (shapeId === 'Expires') {
  10. // preserve timestamp type for Expires.
  11. newShapes[shapeId] = {};
  12. newShapes[shapeId].type = 'timestamp';
  13. // add ExpiresString
  14. newShapes['ExpiresString'] = {
  15. type: 'string'
  16. };
  17. }
  18. }
  19. model.shapes = newShapes;
  20. for (var operationKey in model.operations) {
  21. var op = model.operations[operationKey];
  22. if (!op.output || !op.output.shape) {
  23. continue;
  24. }
  25. var output = model.shapes[op.output.shape];
  26. if (!output || !output.members) {
  27. continue;
  28. }
  29. if ('Expires' in output.members) {
  30. var newMembers = {};
  31. for (var memberKey in output.members) {
  32. newMembers[memberKey] = output.members[memberKey];
  33. if (memberKey === 'Expires') {
  34. newMembers['ExpiresString'] = Object.assign({}, newMembers[memberKey], {
  35. 'shape': 'ExpiresString',
  36. 'location': 'header',
  37. 'locationName': 'ExpiresString'
  38. });
  39. newMembers[memberKey].deprecated = true;
  40. newMembers[memberKey].documentation = 'Deprecated in favor of ExpiresString.';
  41. }
  42. }
  43. output.members = newMembers;
  44. }
  45. }
  46. return true;
  47. }
  48. return false;
  49. };