Storage
Class: Storage<T>
Defined in: gcp/src/services/storage.service.ts:176
Storage handles the storage of binary on a Google Cloud Storage bucket
See Binary the general interface
Webda Modda
GoogleCloudStorage
Extends
CloudBinary<T>
Type Parameters
T
T extends StorageParameters = StorageParameters
Constructors
Constructor
new Storage<
T>(name,params):Storage<T>
Defined in: core/lib/services/service.d.ts:72
Service
Parameters
name
string
The name of the service
params
T
The parameters block define in the configuration file
Returns
Storage<T>
Inherited from
CloudBinary<T>.constructor
Properties
_compiledCapabilities
protected_compiledCapabilities:Record<string,any>
Defined in: core/lib/services/iservice.d.ts:39
Capabilities detected at compile-time from @WebdaCapability-tagged interfaces.
Populated during Service.resolve by reading the service's entry in
webda.module.json. Each key is a capability name (e.g., "request-filter"),
and the value is an empty object {} by default. Override getCapabilities
to provide capability-specific configuration or to conditionally disable capabilities.
See
getCapabilities
Inherited from
CloudBinary._compiledCapabilities
_lowercaseMaps
_lowercaseMaps:
any
Defined in: core/lib/services/binary.service.d.ts:689
Inherited from
CloudBinary._lowercaseMaps
[WEBDA_EVENTS]
[WEBDA_EVENTS]:
BinaryEvents
Defined in: core/lib/services/service.d.ts:50
Set the Webda events here
Inherited from
CloudBinary.[WEBDA_EVENTS]
logger
protectedlogger:Logger
Defined in: core/lib/services/service.d.ts:59
Logger with class context
Inherited from
CloudBinary.logger
metrics
metrics:
object
Defined in: core/lib/services/binary.service.d.ts:690
Get metrics
delete
delete:
Counter
download
download:
Counter
metadataUpdate
metadataUpdate:
Counter
upload
upload:
Counter
Inherited from
CloudBinary.metrics
name
readonlyname:string
Defined in: core/lib/services/iservice.d.ts:19
Inherited from
CloudBinary.name
parameters
readonlyparameters:T
Defined in: core/lib/services/iservice.d.ts:20
Inherited from
CloudBinary.parameters
createConfiguration?
staticoptionalcreateConfiguration?: (params) =>any
Defined in: core/lib/services/iservice.d.ts:24
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
CloudBinary.createConfiguration
filterConfiguration?
staticoptionalfilterConfiguration?: (params) =>any
Defined in: core/lib/services/iservice.d.ts:28
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
CloudBinary.filterConfiguration
Parameters
staticParameters: typeofServiceParameters
Defined in: core/lib/services/service.d.ts:46
Service parameters
Inherited from
CloudBinary.Parameters
Methods
__clean()
__clean():
Promise<void>
Defined in: gcp/src/services/storage.service.ts:521
Delete every object under the prefix, used by tests
Returns
Promise<void>
Overrides
CloudBinary.__clean
_cleanUsage()
_cleanUsage(
hash,uuid,property?):Promise<void>
Defined in: gcp/src/services/storage.service.ts:272
Parameters
hash
string
the binary hash
uuid
string
the object uuid
property?
string
the object property
Returns
Promise<void>
Inherit Doc
Overrides
CloudBinary._cleanUsage
_get()
_get(
info):Promise<Readable>
Defined in: gcp/src/services/storage.service.ts:194
Parameters
info
BinaryMap
the binary map
Returns
Promise<Readable>
the content stream
Overrides
CloudBinary._get
_getKey()
_getKey(
hash,suffix?):string
Defined in: core/lib/services/cloudbinary.d.ts:34
Return the S3 key
Parameters
hash
string
the hash value
suffix?
string
the suffix to append
Returns
string
the result string
Inherited from
CloudBinary._getKey
addListener()
addListener<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:80
Type Parameters
Key
Key extends keyof BinaryEvents
Parameters
eventName
Key
the event name
listener
(event) => void | Promise<void>
the event listener
Returns
this
this for chaining
See
EventEmitter.addListener
Inherited from
CloudBinary.addListener
addRoute()
protectedaddRoute(url,methods,executer,openapi?,override?):void
Defined in: core/lib/services/service.d.ts:177
Add a route dynamicaly
Parameters
url
string
of the route can contains dynamic part like {uuid}
methods
HttpMethodType[]
the HTTP methods
executer
Function
Method to execute for this route
openapi?
OpenAPIWebdaDefinition
the OpenAPI specification
override?
boolean
whether to override existing
Returns
void
Inherited from
CloudBinary.addRoute
authorizeClientEvent()
authorizeClientEvent(
_event,_context):boolean
Defined in: core/lib/services/service.d.ts:153
Authorize a public event subscription
Parameters
_event
string
the event name
_context
OperationContext
the execution context
Returns
boolean
true if the condition is met
Inherited from
CloudBinary.authorizeClientEvent
cascadeDelete()
cascadeDelete(
info,uuid):Promise<void>
Defined in: core/lib/services/cloudbinary.d.ts:42
Parameters
info
BinaryMap
uuid
string
Returns
Promise<void>
Inherited from
CloudBinary.cascadeDelete
checkMap()
protectedcheckMap(object,property):void
Defined in: core/lib/services/binary.service.d.ts:790
Check if a map is defined
Parameters
object
Model
the target object
property
string
the property name
Returns
void
Inherited from
CloudBinary.checkMap
computeParameters()
computeParameters():
void
Defined in: core/lib/services/service.d.ts:77
Used to compute or derivate input parameter to attribute
Returns
void
Deprecated
Inherited from
CloudBinary.computeParameters
delete()
delete(
object,property,index):Promise<void>
Defined in: core/lib/services/cloudbinary.d.ts:38
Parameters
object
CoreModelWithBinary
property
string
index
number
Returns
Promise<void>
Inherited from
CloudBinary.delete
deleteObject()
deleteObject(
params):Promise<void>
Defined in: gcp/src/services/storage.service.ts:323
Delete a file inside an existing bucket
Parameters
params
the object to delete
Returns
Promise<void>
deleteSuccess()
deleteSuccess(
object,property,index?):Promise<void>
Defined in: core/lib/services/binary.service.d.ts:815
Parameters
object
CoreModelWithBinary
the target object
property
string
the property name
index?
number
the index
Returns
Promise<void>
the result
Inherited from
CloudBinary.deleteSuccess
downloadTo()
downloadTo(
info,filename):Promise<void>
Defined in: core/lib/services/binary.service.d.ts:768
Download a binary to a file
Parameters
info
BinaryMap
The reference stored in your target object
filename
any
the filename
Returns
Promise<void>
Inherited from
CloudBinary.downloadTo
emit()
emit<
Key>(event,data):Promise<void>
Defined in: core/lib/services/service.d.ts:204
Emit the event with data and wait for Promise to finish if listener returned a Promise
Type Parameters
Key
Key extends keyof BinaryEvents
Parameters
event
Key
the event name
data
BinaryEvents[Key]
the data to process
Returns
Promise<void>
Inherited from
CloudBinary.emit
get()
get(
info):Promise<Readable>
Defined in: core/lib/services/binary.service.d.ts:760
Get a binary
Parameters
info
BinaryMap
The reference stored in your target object
Returns
Promise<Readable>
the result
Emits
'binaryGet'
Inherited from
CloudBinary.get
getBucketSize()
getBucketSize(
bucket?,prefix?,regex?):Promise<{count:number;size:number; }>
Defined in: gcp/src/services/storage.service.ts:471
Get a bucket size with a prefix
Parameters
bucket?
string
the bucket, default to the one predefined
prefix?
string
on the bucket
regex?
RegExp
to filter files
Returns
Promise<{ count: number; size: number; }>
the total size and count of files
getCapabilities()
getCapabilities():
Record<string,any>
Defined in: core/lib/services/iservice.d.ts:61
Return the capabilities of this service.
By default returns capabilities detected at compile-time from
Returns
Record<string, any>
the result
Webda Capability-tagged
interfaces in webda.module.json.
Override to disable capabilities based on configuration:
getCapabilities() {
const caps = super.getCapabilities();
if (!this.parameters.enabled) delete caps["request-filter"];
return caps;
}
Inherited from
CloudBinary.getCapabilities
getClientEvents()
getClientEvents():
string[]
Defined in: core/lib/services/service.d.ts:144
Return the events that an external system can subscribe to
Returns
string[]
the list of results
Inherited from
CloudBinary.getClientEvents
getContent()
getContent(
params):Promise<Readable>
Defined in: gcp/src/services/storage.service.ts:221
Get object content as a stream
Parameters
params
the object to read
Returns
Promise<Readable>
the content stream
getFile()
getFile(
req):Promise<BinaryFile<{ }>>
Defined in: core/lib/services/binary.service.d.ts:821
Get file either from multipart post or raw
Parameters
req
IOperationContext
the request
Returns
Promise<BinaryFile<{ }>>
the result
Inherited from
CloudBinary.getFile
getMaxListeners()
getMaxListeners():
number
Defined in: core/lib/events/asynceventemitter.d.ts:84
Returns
number
Inherited from
CloudBinary.getMaxListeners
getMeta()
getMeta(
params):Promise<StorageObjectMeta>
Defined in: gcp/src/services/storage.service.ts:456
Fetch an object's metadata
Parameters
params
the object
Returns
Promise<StorageObjectMeta>
size and content type
getMetric()
getMetric<
T>(type,configuration):T
Defined in: core/lib/services/service.d.ts:138
Add service name label
Type Parameters
T
T = Counter<string> | Histogram<string> | Gauge<string>
Parameters
type
CustomConstructor<T, [MetricConfiguration<T>]>
the type to look up
configuration
MetricConfiguration<T>
the configuration
Returns
T
the result
Inherited from
CloudBinary.getMetric
getName()
getName():
string
Defined in: core/lib/services/service.d.ts:209
Get service name
Returns
string
the result string
Inherited from
CloudBinary.getName
getOpenApiReplacements()
getOpenApiReplacements():
any
Defined in: core/lib/services/service.d.ts:182
Return variables for replacement in openapi
Returns
any
the result
Inherited from
CloudBinary.getOpenApiReplacements
getOperationId()
getOperationId(
id):string
Defined in: core/lib/services/service.d.ts:167
If undefined is returned it cancel the operation registration
Parameters
id
string
the identifier
Returns
string
the result
Inherited from
CloudBinary.getOperationId
getOperationName()
protectedgetOperationName():string
Defined in: core/lib/services/binary.service.d.ts:826
Return the name of the service for OpenAPI
Returns
string
the result string
Inherited from
CloudBinary.getOperationName
getParameters()
getParameters():
T
Defined in: core/lib/services/service.d.ts:82
Get the service parameters
Returns
T
the result
Inherited from
CloudBinary.getParameters
getPublicUrl()
getPublicUrl(
params):Promise<string>
Defined in: gcp/src/services/storage.service.ts:445
Retrieve public URL of this object
Parameters
params
the object
Returns
Promise<string>
Public URL in order to download the file
getRedirectUrlFromObject()
getRedirectUrlFromObject(
binaryMap,context,expires?):Promise<string>
Defined in: core/lib/services/cloudbinary.d.ts:27
Get a UrlFromObject
Parameters
binaryMap
any
the binary map definition
context
any
the execution context
expires?
number
the expiration time
Returns
Promise<string>
the result
Inherited from
CloudBinary.getRedirectUrlFromObject
getService()
getService<
T>(name):ServicesMap[T]
Defined in: core/lib/services/service.d.ts:131
Get a service by name
Type Parameters
T
T extends keyof ServicesMap
Parameters
name
T
the name to use
Returns
ServicesMap[T]
the result map
Deprecated
Use useService, might reconsider
Inherited from
CloudBinary.getService
getSignedUrl()
getSignedUrl(
params):Promise<string>
Defined in: gcp/src/services/storage.service.ts:417
Retrieve one signed URL to download the file in parameter
Parameters
params
the object and signature options
Returns
Promise<string>
URL in order to download the file
getSignedUrlFromMap()
getSignedUrlFromMap(
map,expires,_context):Promise<string>
Defined in: gcp/src/services/storage.service.ts:206
Parameters
map
BinaryMap
the binary map
expires
number
expiration in seconds
_context
OperationContext
the operation context
Returns
Promise<string>
the signed url
Overrides
CloudBinary.getSignedUrlFromMap
getSignedUrlHeaders()
getSignedUrlHeaders():
object
Defined in: gcp/src/services/storage.service.ts:434
Retrieve mandatory headers if needed by the cloud provider (ie. Azure) Returns empty object if no headers are mandatory
Returns
object
mandatory headers
getState()
getState():
ServiceStates
Defined in: core/lib/services/service.d.ts:55
Get the current state
Returns
ServiceStates
the result
Inherited from
CloudBinary.getState
getStorageBucket()
getStorageBucket(
bucket?):Bucket
Defined in: gcp/src/services/storage.service.ts:262
Return the Google Bucket directly
Parameters
bucket?
string = ...
name of the bucket default to the one predefined
Returns
Bucket
the bucket
getUrl()
getUrl(
url,_methods):string
Defined in: core/lib/services/service.d.ts:161
Return the full path url based on parameters
Parameters
url
string
relative url to service
_methods
HttpMethodType[]
in case we need filtering (like Store)
Returns
string
absolute url or undefined if need to skip the Route
Inherited from
CloudBinary.getUrl
getUsageCount()
getUsageCount(
hash):Promise<number>
Defined in: gcp/src/services/storage.service.ts:288
Parameters
hash
string
the binary hash
Returns
Promise<number>
the number of objects using the binary
Inherit Doc
Overrides
CloudBinary.getUsageCount
handleBinary()
handleBinary(
modelName,attribute):-1|0|1|2
Defined in: core/lib/services/binary.service.d.ts:715
Define if binary is managed by the store
Parameters
modelName
string
the model name
attribute
string
the attribute name
Returns
-1 | 0 | 1 | 2
-1 if not managed, 0 if managed but by default, 1 if managed and in the map, 2 if explicit with attribute and model
Inherited from
CloudBinary.handleBinary
init()
abstractinit():Promise<Storage<T>>
Defined in: core/lib/services/service.d.ts:198
Will be called after all the Services are created
Returns
Promise<Storage<T>>
Inherited from
CloudBinary.init
initMetrics()
initMetrics():
void
Defined in: core/lib/services/binary.service.d.ts:699
Returns
void
Inherited from
CloudBinary.initMetrics
initOperations()
initOperations():
void
Defined in: core/lib/services/service.d.ts:186
Init the operations from
Returns
void
Operation
decorators on this service
Inherited from
CloudBinary.initOperations
listeners()
listeners(
eventName):Function[]
Defined in: core/lib/events/asynceventemitter.d.ts:139
Get all listeners for an event
Parameters
eventName
keyof BinaryEvents
the event name
Returns
Function[]
the list of results
Inherited from
CloudBinary.listeners
loadCapabilities()
protectedloadCapabilities():void
Defined in: core/lib/services/service.d.ts:120
Load capabilities from webda.module.json metadata into _compiledCapabilities.
Called during resolve after dependency injection. Reads the service's
type name from parameters, looks it up in the application's module metadata
(moddas or beans section), and populates _compiledCapabilities with an
empty object for each declared capability name.
Fails silently if the application is not available (e.g., in unit tests where services are instantiated without a full application context).
Returns
void
Example
// If webda.module.json contains:
// { "moddas": { "MyApp/HawkService": { "capabilities": ["request-filter", "cors-filter"] } } }
// Then after resolve(), this.getCapabilities() returns:
// { "request-filter": {}, "cors-filter": {} }
See
getCapabilities
Inherited from
CloudBinary.loadCapabilities
log()
log(
level, ...args):void
Defined in: core/lib/services/service.d.ts:226
Parameters
level
WorkerLogLevel
to log
args
...any[]
additional arguments
Returns
void
Inherited from
CloudBinary.log
moveObject()
moveObject(
source,destination):Promise<void>
Defined in: gcp/src/services/storage.service.ts:333
Move a file from one bucket to an other
Parameters
source
the object to move
destination
the new location
Returns
Promise<void>
newModel()
newModel(
obj):BinaryMap
Defined in: core/lib/services/binary.service.d.ts:775
Based on the raw Map init a BinaryMap
Parameters
obj
any
the target object
Returns
BinaryMap
the result map
Inherited from
CloudBinary.newModel
off()
off<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:116
Type Parameters
Key
Key extends keyof BinaryEvents
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.off
Inherited from
CloudBinary.off
on()
on<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:102
Type Parameters
Key
Key extends keyof BinaryEvents
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
CloudBinary.on
once()
once<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:95
Type Parameters
Key
Key extends keyof BinaryEvents
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
CloudBinary.once
putMarker()
putMarker(
hash,uuid,model):Promise<void>
Defined in: gcp/src/services/storage.service.ts:506
Add a usage marker for a binary
Parameters
hash
string
the binary hash
uuid
string
the marker name: ${property}_${uuid}
model
string
the model identifier of the object
Returns
Promise<void>
putObject()
putObject(
key,body,metadata?,bucket?):Promise<void>
Defined in: gcp/src/services/storage.service.ts:233
Upload a local file to GCS bucket destination
Parameters
key
string
key to add to
body
string | Buffer<ArrayBufferLike> | Readable
content of the object, a string is a local file path
metadata?
to put along the object
bucket?
string = ...
to use
Returns
Promise<void>
putRedirectUrl()
putRedirectUrl(
object,property,info?,context?):Promise<{headers: {[key:string]:string; };method:string;url:string; }>
Defined in: gcp/src/services/storage.service.ts:350
Get a signed url for the client to upload the binary directly to GCS
Parameters
object
CoreModel
the object to attach the binary to
property
string
the object property
info?
BinaryFileInfo<{ }> & object
the binary information (hash, challenge), read from the context if not provided
context?
OperationContext<any>
the operation context
Returns
Promise<{ headers: {[key: string]: string; }; method: string; url: string; }>
the upload url, undefined if the binary is already uploaded
Overrides
CloudBinary.putRedirectUrl
removeAllListeners()
removeAllListeners<
Key>(eventName?):this
Defined in: core/lib/events/asynceventemitter.d.ts:122
Type Parameters
Key
Key extends keyof BinaryEvents
Parameters
eventName?
Key
the event name
Returns
this
this for chaining
See
EventEmitter.removeAllListeners
Inherited from
CloudBinary.removeAllListeners
removeListener()
removeListener<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:109
Type Parameters
Key
Key extends keyof BinaryEvents
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.removeListener
Inherited from
CloudBinary.removeListener
resolve()
resolve():
this
Defined in: core/lib/services/service.d.ts:98
Resolve parameters and load metadata. @Route-declared routes are scanned
and registered by Router.discoverRoutes(services) from Core.init()
once every service has resolved — nothing to do per-service here.
Returns
this
the result
Inherited from
CloudBinary.resolve
setMaxListeners()
setMaxListeners(
n):this
Defined in: core/lib/events/asynceventemitter.d.ts:88
Parameters
n
number
Returns
this
Inherited from
CloudBinary.setMaxListeners
stop()
stop():
Promise<void>
Defined in: core/lib/services/service.d.ts:86
Shutdown the current service if action need to be taken
Returns
Promise<void>
Inherited from
CloudBinary.stop
store()
store(
object,property,file):Promise<void>
Defined in: gcp/src/services/storage.service.ts:301
Parameters
object
CoreModel
the object to attach the binary to
property
string
the object property
file
BinaryFile
the binary to store
Returns
Promise<void>
Inherit Doc
Overrides
CloudBinary.store
toJSON()
toJSON():
string
Defined in: core/lib/services/service.d.ts:191
Prevent service to be serialized
Returns
string
the result
Inherited from
CloudBinary.toJSON
toString()
toString():
string
Defined in: core/lib/services/service.d.ts:91
Return service representation
Returns
string
the result
Inherited from
CloudBinary.toString
uploadSuccess()
uploadSuccess(
object,property,fileInfo):Promise<void>
Defined in: core/lib/services/binary.service.d.ts:797
Ensure events are sent correctly after an upload and update the BinaryFileInfo in targetted object
Parameters
object
CoreModelWithBinary
the target object
property
string
the property name
fileInfo
BinaryFileInfo<{ }> | { toBinaryFileInfo: () => BinaryFileInfo; }
the file information
Returns
Promise<void>
Inherited from
CloudBinary.uploadSuccess
verifyMapAndStore()
protectedverifyMapAndStore(ctx):IStore
Defined in: core/lib/services/binary.service.d.ts:832
Based on the request parameter verify it match a known mapping
Parameters
ctx
IOperationContext
the operation context
Returns
IStore
the result
Inherited from
CloudBinary.verifyMapAndStore
streamToBuffer()
staticstreamToBuffer(stream):Promise<Buffer<ArrayBufferLike>>
Defined in: core/lib/services/binary.service.d.ts:782
Read a stream to a buffer
Parameters
stream
Readable
the stream
Returns
Promise<Buffer<ArrayBufferLike>>
the result
Inherited from
CloudBinary.streamToBuffer