client-swift
Version:
Object Storage OpenStack Swift client for Node.js
77 lines (70 loc) • 2 kB
JavaScript
module.exports = class SwiftObject {
constructor(container, name) {
this.container = container
this.name = name
}
url() {
return this.container.url()+"/"+this.name
}
/**
* https://developer.openstack.org/api-ref/object-store/?expanded=create-or-update-object-metadata-detail,show-container-details-and-list-objects-detail,get-object-content-and-metadata-detail#get-object-content-and-metadata
*
* GET
* /v1/{account}/{container}/{object}
* Get object content and metadata
*/
async write(stream) {
return this.container.client.callWithPipe({
url: this.url(),
method: "GET"
}, stream)
}
/**
* https://developer.openstack.org/api-ref/object-store/?expanded=show-container-details-and-list-objects-detail#copy-object
*
* COPY
* /v1/{account}/{container}/{object}
* Copy object
*/
async copy(dstContainer, dstObjectName, headers = {}) {
headers["Destination"] = dstContainer+"/"+dstObjectName
return this.container.client.call({
url: this.url(),
method: "COPY",
headers: headers
}, (resolve, response) => {
resolve(response)
})
}
/**
* https://developer.openstack.org/api-ref/object-store/?expanded=show-container-details-and-list-objects-detail,show-object-metadata-detail#show-object-metadata
*
* HEAD
* /v1/{account}/{container}/{object}
* Show object metadata
*/
async metadata() {
return this.container.client.call({
url: this.url(),
method: "HEAD"
}, (resolve, response) => {
resolve(response.headers)
})
}
/**
* https://developer.openstack.org/api-ref/object-store/?expanded=#create-or-update-object-metadata
*
* POST
* /v1/{account}/{container}/{object}
* Create or update object metadata
*/
async updateMetadata(headers) {
return this.container.client.call({
url: this.url(),
method: "POST",
headers: headers
}, (resolve, response) => {
resolve(response.headers)
})
}
}