trainingpeaks-sdk
Version:
TypeScript SDK for TrainingPeaks API integration
55 lines (54 loc) • 1.98 kB
JavaScript
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);
};