UNPKG

cloudinary-video-player

Version:

Cloudinary Video Player

106 lines (75 loc) 2.47 kB
import cloudinary from 'cloudinary-core'; import { normalizeOptions } from '../common'; import { sliceAndUnsetProperties } from 'utils/slicing'; import { getCloudinaryInstanceOf } from 'utils/cloudinary'; import { objectToQuerystring } from 'utils/querystring'; class BaseSource { constructor(publicId, options = {}) { ({ publicId, options } = normalizeOptions(publicId, options)); let _publicId = null; let _cloudinaryConfig = null; let _transformation = null; let _resourceConfig = null; let _queryParams = null; this.publicId = (publicId) => { if (!publicId) { return _publicId; } _publicId = publicId; return this; }; this.cloudinaryConfig = (config) => { if (!config) { return _cloudinaryConfig; } _cloudinaryConfig = getCloudinaryInstanceOf(cloudinary.Cloudinary, config); return this; }; this.resourceConfig = (config) => { if (!config) { return _resourceConfig; } _resourceConfig = config; return this; }; this.transformation = (trans) => { if (!trans) { return _transformation; } _transformation = getCloudinaryInstanceOf(cloudinary.Transformation, trans); return this; }; this.queryParams = (params) => { if (!params) { return _queryParams; } _queryParams = params; return this; }; const { cloudinaryConfig } = sliceAndUnsetProperties(options, 'cloudinaryConfig'); if (!cloudinaryConfig) { throw new Error('Source is missing \'cloudinaryConfig\'.'); } this.cloudinaryConfig(cloudinaryConfig); const { transformation } = sliceAndUnsetProperties(options, 'transformation'); this.transformation(transformation); const { queryParams } = sliceAndUnsetProperties(options, 'queryParams'); this.queryParams(queryParams); this.resourceConfig(options); this.publicId(publicId); } config() { const cld = new cloudinary.Cloudinary(this.cloudinaryConfig().config()); cld.config(this.resourceConfig()); return cld; } url({ transformation } = {}) { const url = this.config().url(this.publicId(), { transformation: transformation || this.transformation() }); let queryString = ''; if (this.queryParams()) { queryString = objectToQuerystring(this.queryParams()); } return `${url}${queryString}`; } } export default BaseSource;