UNPKG

trainingpeaks-sdk

Version:
55 lines (54 loc) 1.98 kB
import { ValidationError } from '../../domain/errors/domain-errors.js'; export const createWorkoutFile = (fileName, content, mimeType) => { const trimmedFileName = fileName.trim(); const trimmedMimeType = mimeType.trim(); if (!trimmedFileName) { throw new ValidationError('File name cannot be empty', 'fileName'); } if (trimmedFileName.length > 255) { throw new ValidationError('File name cannot exceed 255 characters', 'fileName'); } if (!trimmedMimeType) { throw new ValidationError('MIME type cannot be empty', 'mimeType'); } if (trimmedMimeType.length > 100) { throw new ValidationError('MIME type cannot exceed 100 characters', 'mimeType'); } if (!content) { throw new ValidationError('File content cannot be empty', 'content'); } const workoutFile = { fileName: trimmedFileName, content, mimeType: trimmedMimeType, }; return Object.freeze(workoutFile); }; export const validateWorkoutFile = (file) => { if (!file) { return false; } if (typeof file.fileName !== 'string' || typeof file.content !== 'string' || typeof file.mimeType !== 'string') { return false; } return (file.fileName.length > 0 && file.content.length > 0 && file.mimeType.length > 0); }; export const getFileSize = (file) => { if (typeof file.content !== 'string') { throw new ValidationError('File content must be a valid string to calculate size', 'content'); } return Buffer.byteLength(file.content, 'utf8'); }; export const updateWorkoutFileContent = (file, newContent) => { if (!newContent) { throw new ValidationError('File content cannot be empty', 'content'); } return createWorkoutFile(file.fileName, newContent, file.mimeType); }; export const updateWorkoutFileName = (file, newFileName) => { return createWorkoutFile(newFileName, file.content, file.mimeType); };