Skip to main content

Storage

@webda/gcp


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​

protected logger: 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​

readonly name: string

Defined in: core/lib/services/iservice.d.ts:19

Inherited from​

CloudBinary.name


parameters​

readonly parameters: T

Defined in: core/lib/services/iservice.d.ts:20

Inherited from​

CloudBinary.parameters


createConfiguration?​

static optional createConfiguration?: (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?​

static optional filterConfiguration?: (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​

static Parameters: typeof ServiceParameters

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()​

protected addRoute(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()​

protected checkMap(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​

StorageObject

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​

StorageObject

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​

StorageObject

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()​

protected getOperationName(): 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​

StorageObject

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​

SignedUrlParams

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()​

abstract init(): 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()​

protected loadCapabilities(): 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​

StorageObject

the object to move

destination​

StorageObject

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()​

protected verifyMapAndStore(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()​

static streamToBuffer(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