Reference Source Test

src/video/resources/uploads.js

  1. /*!
  2. * Mux Assets
  3. * Copyright(c) 2018 Mux Inc.
  4. */
  5. const Base = require('../../base');
  6.  
  7. /**
  8. * @private Base asset path for the Mux API
  9. * */
  10. const PATH = '/video/v1/uploads';
  11.  
  12. /**
  13. * @private
  14. * Build the base asset path for the Mux API
  15. * */
  16. const buildBasePath = uploadId => `${PATH}/${uploadId}`;
  17.  
  18. /**
  19. * Uploads Class - Provides access to the Mux Video Uploads API
  20. *
  21. * @example
  22. * const { Video } = new Mux(accessToken, secret);
  23. *
  24. * // Create an upload
  25. * Video.Uploads.create({ new_asset_settings: { playback_policy: 'public' } });
  26. */
  27. class Uploads extends Base {
  28. /**
  29. * Creates a direct upload with the specified JSON parameters
  30. * @extends Base
  31. * @param {Object} params - Upload JSON parameters (e.g timeout)
  32. * @returns {Promise} - Returns a resolved Promise with a response from the Mux API
  33. *
  34. * @example
  35. * const muxClient = new Mux(accessToken, secret);
  36. * const { Video } = muxClient;
  37. *
  38. * // Create a new upload
  39. * const upload = await Video.Uploads.create({new_asset_settings: {playback_policy: 'public'}});
  40. * // Now push a file to the URL returned.
  41. * fs.createReadStream(pathToFile).pipe(request.put(upload.url))
  42. *
  43. * @see https://docs.mux.com/api-reference/video#operation/create-direct-upload
  44. */
  45. create(params) {
  46. if (!params) {
  47. return Promise.reject(
  48. new Error('Params are required for creating a direct upload')
  49. );
  50. }
  51.  
  52. return this.http.post(PATH, params);
  53. }
  54.  
  55. /**
  56. * Cancels an upload
  57. * @param {string} uploadId - The ID for the upload intended for cancellation
  58. * @returns {Promise} - Returns a resolved Promise with a response from the Mux API
  59. *
  60. * @example
  61. * const { Video } = new Mux(accessToken, secret);
  62. *
  63. * // Cancels an upload
  64. * Video.Uploads.cancel(uploadId);
  65. *
  66. * @see https://docs.mux.com/api-reference/video#operation/cancel-direct-upload
  67. */
  68. cancel(uploadId) {
  69. if (!uploadId) {
  70. return Promise.reject(new Error('An upload ID is required'));
  71. }
  72. return this.http.put(`${buildBasePath(uploadId)}/cancel`);
  73. }
  74.  
  75. /**
  76. * Get an upload
  77. * @param {string} uploadId - The ID for the upload
  78. * @returns {Promise} - Returns a resolved Promise with a response from the Mux API
  79. *
  80. * @example
  81. * const { Video } = new Mux(accessToken, secret);
  82. *
  83. * // Get an upload
  84. * Video.Uploads.get(uploadId);
  85. *
  86. * @see https://docs.mux.com/api-reference/video#operation/get-direct-upload
  87. */
  88. get(uploadId) {
  89. if (!uploadId) {
  90. return Promise.reject(
  91. new Error('An upload ID is required to get an asset')
  92. );
  93. }
  94. return this.http.get(buildBasePath(uploadId));
  95. }
  96.  
  97. /**
  98. * List all uploads
  99. * @returns {Promise} - Returns a resolved Promise with a response from the Mux API
  100. *
  101. * @example
  102. * const { Video } = new Mux(accessToken, secret);
  103. *
  104. * // List all uploads
  105. * Video.Uploads.list();
  106. *
  107. * @see https://docs.mux.com/api-reference/video#operation/list-direct-uploads
  108. */
  109. list(params) {
  110. return this.http.get(PATH, { params });
  111. }
  112. }
  113.  
  114. module.exports = Uploads;