@eluvio/elv-utils-js
Version:
Utilities for the Eluvio Content Fabric
63 lines (52 loc) • 1.71 kB
JavaScript
// Probe file in object for media structure
const {NewOpt} = require('./lib/options')
const Utility = require('./lib/Utility')
const ArgOutfile = require('./lib/concerns/ArgOutfile')
const Client = require('./lib/concerns/Client')
const CloudAccess = require('./lib/concerns/CloudAccess')
const ExistLibOrObjOrVerOrDft = require('./lib/concerns/kits/ExistLibOrObjOrVerOrDft')
class FilesProbe extends Utility {
static blueprint() {
return {
concerns: [Client, ExistLibOrObjOrVerOrDft, ArgOutfile, CloudAccess],
options: [
NewOpt('files', {
demand: true,
descTemplate: 'File path(s) within object.',
string: true,
type: 'array'
})
]
}
}
async body() {
const {files, outfile} = this.args
const client = await this.concerns.Client.get()
const access = this.concerns.CloudAccess.credentialSet(false)
const {libraryId, objectId, versionHash, writeToken} = await this.concerns.ExistLibOrObjOrVerOrDft.argsProc()
const {data, errors, warnings} = await client.CallBitcodeMethod({
libraryId,
objectId,
versionHash,
writeToken,
method: '/media/files/probe',
constant: false,
body: {file_paths: files, access}
})
if(outfile) {
this.concerns.ArgOutfile.writeJson(data)
} else {
this.logger.logObject(data)
}
this.logger.data('filesMediaInfo', data)
this.logger.errorsAndWarnings({errors, warnings})
}
header() {
return `Get media info for file(s) in ${this.args.versionHash || this.args.objectId}...`
}
}
if(require.main === module) {
Utility.cmdLineInvoke(FilesProbe)
} else {
module.exports = FilesProbe
}