UNPKG

@eluvio/elv-utils-js

Version:

Utilities for the Eluvio Content Fabric

94 lines (77 loc) 3.01 kB
// Set or clear text watermark for an offering const Utility = require('./lib/Utility') const TextWatermarkModel = require('./lib/models/TextWatermarkModel') const ArgClear = require('./lib/concerns/args/ArgClear') const ArgOfferingKey = require('./lib/concerns/args/ArgOfferingKey') const ArgWatermark = require('./lib/concerns/ArgWatermark') const ExistObj = require('./lib/concerns/kits/ExistObj') const FabricFile = require('./lib/concerns/FabricFile') const Metadata = require('./lib/concerns/Metadata') const chkNoClearOrWatermark = (argv) => { if (!argv.clear && !argv.watermark) { throw Error('Must supply either --watermark or --clear') } return true // tell yargs that the arguments passed the check } class OfferingSetTextWatermark extends Utility { static blueprint() { return { concerns: [ ExistObj, Metadata, ArgOfferingKey, ArgWatermark, ArgClear, FabricFile ], checksMap: {chkNoClearOrWatermark} } } async body() { const logger = this.logger const watermark = this.args.watermark && TextWatermarkModel( this.concerns.ArgWatermark.asObject()) const {offeringKey, clear} = this.args // operations that may need to wait on network access // ---------------------------------------------------- const {libraryId, objectId} = await this.concerns.ExistObj.argsProc() logger.log('Retrieving existing offering metadata from object...') const subtree = `/offerings/${offeringKey}` const currentOffering = await this.concerns.ExistObj.metadata({subtree}) if (!currentOffering) throw Error(`Offering '${offeringKey}' not found.`) let newHash if (clear) { if (!currentOffering.simple_watermark) throw Error(`Offering '${offeringKey}' does not currently have a text watermark.`) newHash = await this.concerns.Metadata.del({ commitMessage: 'Remove text watermark', libraryId, objectId, subtree: subtree + '/simple_watermark' }) } else { if (currentOffering.image_watermark || currentOffering.html_watermark) { throw Error( `Offering '${offeringKey}' already has an image or html watermark. Please remove it before setting a simple text watermark.` ) } newHash = await this.concerns.Metadata.write({ commitMessage: 'Set text watermark', libraryId, metadata: watermark, objectId, subtree: subtree + '/simple_watermark' }) } this.logger.data('version_hash', newHash) this.logger.log(`New Version Hash: ${newHash}`) } header() { return this.args.clear ? `Clear text watermark from offering '${this.args.offeringKey}' in object ${this.args.objectId}` : `Set text watermark for offering '${this.args.offeringKey}' in object ${this.args.objectId}` } } if(require.main === module) { Utility.cmdLineInvoke(OfferingSetTextWatermark) } else { module.exports = OfferingSetTextWatermark }