Source: response/responseManagerFactory.js

  1. /**
  2. * @author Sloan Seaman
  3. * @copyright 2016 and on
  4. * @version .1
  5. * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
  6. */
  7. /** @private */
  8. var ResponseProviderByDirectory = require ('../provider/convention/responseProviderByDirectory.js');
  9. var ResponseProviderByFile = require ('../provider/convention/responseProviderByFile.js');
  10. var ResponseProviderByMap = require ('../provider/convention/responseProviderByMap.js');
  11. var DefaultJSONFilenameFormatter = require ('../provider/defaultJSONFilenameFormatter.js');
  12. var HandlebarsFormatterManager = require('./formatter/handlebarsFormatterManager.js');
  13. var DefaultResponseBuilder = require('./defaultResponseBuilder.js');
  14. var DefaultResponseManager = require('./defaultResponseManager.js');
  15. /**
  16. * Static factory that can create ResponseManagers depending on the specific needs of the skill.
  17. * This should never need to be called and is here as a placeholder.
  18. *
  19. * @constructor
  20. * @see {@link ResponseManager}
  21. */
  22. function ResponseManagerFactory() {
  23. }
  24. /**
  25. * Creates a ResponseManager that loads responses from a directory and
  26. * uses the DefaultResponseManager and the HandlebarsFormatterManager
  27. *
  28. * @function
  29. * @static
  30. * @see {@link DefaultResponseManager}
  31. * @see {@link ResponseProviderByDirectory}
  32. * @see {@link HandlebarsFormatterManager}
  33. * @param {String} directory The directory to read the responses from
  34. * @return {ResponseManager} The ResponseManager that will manage the responses
  35. */
  36. ResponseManagerFactory.createHandlebarEnabledByDirectory = function(directory) {
  37. var responseProvider = new ResponseProviderByDirectory(directory,
  38. {
  39. responseBuilder : new DefaultResponseBuilder()
  40. .withFormatterManager(new HandlebarsFormatterManager()),
  41. filenameFormatter : new DefaultJSONFilenameFormatter()
  42. }
  43. );
  44. return new DefaultResponseManager([responseProvider]);
  45. };
  46. /**
  47. * Creates a ResponseManager that loads responses from a file and
  48. * uses the DefaultResponseManager and the HandlebarsFormatterManager
  49. *
  50. * @function
  51. * @static
  52. * @see {@link DefaultResponseManager}
  53. * @see {@link ResponseProviderByFile}
  54. * @see {@link HandlebarsFormatterManager}
  55. * @param {String} file The file to read the responses from
  56. * @return {ResponseManager} The ResponseManager that will manage the responses
  57. */
  58. ResponseManagerFactory.createHandlebarEnabledByFile = function(file) {
  59. var responseProvider = new ResponseProviderByFile(file,
  60. {
  61. responseBuilder : new DefaultResponseBuilder()
  62. .withFormatterManager(new HandlebarsFormatterManager()),
  63. filenameFormatter : new DefaultJSONFilenameFormatter()
  64. }
  65. );
  66. return new DefaultResponseManager([responseProvider]);
  67. };
  68. /**
  69. * Creates a ResponseManager that loads responses from a map and
  70. * uses the DefaultResponseManager and the HandlebarsFormatterManager
  71. *
  72. * @function
  73. * @static
  74. * @see {@link DefaultResponseManager}
  75. * @see {@link ResponseProviderByMap}
  76. * @see {@link HandlebarsFormatterManager}
  77. * @param {String} map The map to use
  78. * @return {ResponseManager} The ResponseManager that will manage the responses
  79. */
  80. ResponseManagerFactory.createHandlebarEnabledByMap= function(map) {
  81. var responseProvider = new ResponseProviderByMap(map,
  82. {
  83. responseBuilder : new DefaultResponseBuilder()
  84. .withFormatterManager(new HandlebarsFormatterManager()),
  85. filenameFormatter : new DefaultJSONFilenameFormatter()
  86. }
  87. );
  88. return new DefaultResponseManager([responseProvider]);
  89. };
  90. /**
  91. * Creates a ResponseManager that loads responses from a directory and
  92. * uses the DefaultResponseManager and the BasicFormatterManager
  93. *
  94. * @function
  95. * @static
  96. * @see {@link DefaultResponseManager}
  97. * @see {@link ResponseProviderByDirectory}
  98. * @see {@link BasicFormatterManager}
  99. * @param {String} directory The directory to read the responses from
  100. * @return {ResponseManager} The ResponseManager that will manage the responses
  101. */
  102. ResponseManagerFactory.createByDirectory = function(directory) {
  103. return new DefaultResponseManager([new ResponseProviderByDirectory(directory)]);
  104. };
  105. /**
  106. * Creates a ResponseManager that loads responses from a file and
  107. * uses the DefaultResponseManager and the BasicFormatterManager
  108. *
  109. * @function
  110. * @static
  111. * @see {@link DefaultResponseManager}
  112. * @see {@link ResponseProviderByFile}
  113. * @see {@link BasicFormatterManager}
  114. * @param {String} file The file to read the responses from
  115. * @return {ResponseManager} The ResponseManager that will manage the responses
  116. */
  117. ResponseManagerFactory.createByFile = function(file) {
  118. return new DefaultResponseManager([new ResponseProviderByFile(file)]);
  119. };
  120. /**
  121. * Creates a ResponseManager that loads responses from a map and
  122. * uses the DefaultResponseManager and the BasicFormatterManager
  123. *
  124. * @function
  125. * @static
  126. * @see {@link DefaultResponseManager}
  127. * @see {@link ResponseProviderByMap}
  128. * @see {@link BasicFormatterManager}
  129. * @param {String} map The map to use
  130. * @return {ResponseManager} The ResponseManager that will manage the responses
  131. */
  132. ResponseManagerFactory.createByMap = function(map) {
  133. return new DefaultResponseManager([new ResponseProviderByMap(map)]);
  134. };
  135. module.exports = ResponseManagerFactory;