adapter.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. const moment = require('moment')
  2. const MIMETYPES = {
  3. MP4: 'video/mp4',
  4. M4A: 'audio/mp4',
  5. CHAT: 'text/plain',
  6. TRANSCRIPT: 'text/vtt',
  7. CC: 'text/vtt',
  8. TIMELINE: 'application/json'
  9. }
  10. const EXT = {
  11. MP4: 'mp4',
  12. M4A: 'm4a',
  13. CHAT: 'txt',
  14. TRANSCRIPT: 'vtt',
  15. CC: 'vtt',
  16. TIMELINE: 'json'
  17. }
  18. const ICONS = {
  19. MP4: 'video',
  20. M4A: 'file',
  21. CHAT: 'file',
  22. TRANSCRIPT: 'file',
  23. CC: 'file',
  24. FOLDER: 'folder',
  25. TIMELINE: 'file'
  26. }
  27. exports.getDateName = (start, end) => {
  28. return `${start.format('YYYY-MM-DD')} - ${end.format('YYYY-MM-DD')}`
  29. }
  30. exports.getAccountCreationDate = (results) => {
  31. return moment(results.created_at)
  32. }
  33. exports.getUserEmail = (results) => {
  34. return results.email
  35. }
  36. exports.getDateFolderId = (start, end) => {
  37. return `${start.format('YYYY-MM-DD')}_${end.format('YYYY-MM-DD')}`
  38. }
  39. exports.getDateFolderRequestPath = (start, end) => {
  40. return `?from=${start.format('YYYY-MM-DD')}&to=${end.format('YYYY-MM-DD')}`
  41. }
  42. exports.getDateFolderModified = (end) => {
  43. return end.format('YYYY-MM-DD')
  44. }
  45. exports.getDateNextPagePath = (start) => {
  46. return `?cursor=${start.subtract(1, 'days').format('YYYY-MM-DD')}`
  47. }
  48. exports.getNextPagePath = (results) => {
  49. if (results.next_page_token) {
  50. return `?cursor=${results.next_page_token}&from=${results.from}&to=${results.to}`
  51. }
  52. return null
  53. }
  54. // we rely on the file_type attribute to differentiate a recording file from other items
  55. exports.getIsFolder = (item) => {
  56. return !item.file_type
  57. }
  58. exports.getItemName = (item) => {
  59. const start = moment(item.start_time || item.recording_start)
  60. .clone()
  61. .format('YYYY-MM-DD, kk:mm')
  62. if (item.file_type) {
  63. const ext = EXT[item.file_type] ? `.${EXT[item.file_type]}` : ''
  64. const itemType = item.recording_type ? ` - ${item.recording_type.split('_').join(' ')}` : ''
  65. return `${start}${itemType} (${item.file_type.toLowerCase()})${ext}`
  66. }
  67. return `${item.topic} (${start})`
  68. }
  69. exports.getIcon = (item) => {
  70. if (item.file_type) {
  71. return ICONS[item.file_type]
  72. }
  73. return ICONS.FOLDER
  74. }
  75. exports.getMimeType = (item) => {
  76. if (item.file_type) {
  77. return MIMETYPES[item.file_type]
  78. }
  79. return null
  80. }
  81. exports.getId = (item) => {
  82. if (item.file_type && item.file_type === 'CC') {
  83. return `${encodeURIComponent(item.meeting_id)}__CC__${encodeURIComponent(item.recording_start)}`
  84. } else if (item.file_type) {
  85. return `${encodeURIComponent(item.meeting_id)}__${encodeURIComponent(item.id)}`
  86. }
  87. return `${encodeURIComponent(item.uuid)}`
  88. }
  89. exports.getRequestPath = (item) => {
  90. if (item.file_type && item.file_type === 'CC') {
  91. return `${encodeURIComponent(item.meeting_id)}?recordingId=CC&recordingStart=${encodeURIComponent(item.recording_start)}`
  92. } else if (item.file_type) {
  93. return `${encodeURIComponent(item.meeting_id)}?recordingId=${encodeURIComponent(item.id)}`
  94. }
  95. return `${encodeURIComponent(item.uuid)}`
  96. }
  97. exports.getStartDate = (item) => {
  98. if (item.file_type === 'CC') {
  99. return item.recording_start
  100. }
  101. return item.start_time
  102. }
  103. exports.getSize = (item) => {
  104. if (item.file_type && item.file_type === 'CC') {
  105. const maxExportFileSize = 1024 * 1024
  106. return maxExportFileSize
  107. } else if (item.file_type) {
  108. return item.file_size
  109. }
  110. return item.total_size
  111. }