Swift
FORK matsune/Swift
Swift is a client library for connecting Object Storage OpenStack Swift, supporting all Identity API versions (v1.0, v2.0, v3).
This library is inspired by golang's swift client library ncw/swift.
Installation
$ npm install --save client-swift
Usage
let data = authUrl: "http://127.0.0.1/v3" userName: "admin" apiKey: "password" tenant: "admin" domain: "Default" tenantDomain: "Default" // authenticate and create client instancelet client = await data// get containers listlet containers = await client// container instancelet container = client// get objects listlet objects = await container// object instancelet object = container// download filelet dst = fsobject
Documentation
Swift
class
- const Swift = let client = authUrl: "http://127.0.0.1/v3" userName: "admin" apiKey: "password" tenant: "admin" domain: "Default" tenantDomain: "Default" endpointType: "public"
key | Environment Variable |
---|---|
authUrl | $OS_AUTH_URL |
userName | $OS_USERNAME |
apiKey | $OS_PASSWORD |
userId | $OS_USER_ID |
domain | $OS_USER_DOMAIN_NAME |
domainId | $OS_USER_DOMAIN_ID |
tenant | $OS_TENANT_NAME (v2) |
tenant | $OS_PROJECT_NAME (v3) |
tenantId | $OS_TENANT_ID |
tenantDomain | $OS_PROJECT_DOMAIN_NAME |
tenantDomainId | $OS_PROJECT_DOMAIN_ID |
region | $OS_REGION_NAME (v2) |
trustId | $OS_TRUST_ID (v3) |
endpointType | $OS_ENDPOINT_TYPE |
Swift#authenticate()
let client = dataawait client// or// let client = await new Swift(data).authenticate() console // `true` if success// await client.unauthenticate()
Swift#list()
Get containers list
let containers = await client
// containers count: 1 last_modified: '2018-11-16T01:36:13.378500' bytes: 3 name: 'container1' count: 2 last_modified: '2018-11-17T08:01:24.877880' bytes: 25 name: 'container2'
Swift#create(containerName, headers)
Create container
let container1 = await client // returns `SwiftContainer` instance
Swift#delete(containerName)
Delete container
await client
Swift#metadata()
Get account metadata
let metadata = await client
// metadata 'content-length': '0' 'x-account-object-count': '3' 'x-account-storage-policy-policy-0-bytes-used': '28' 'x-account-storage-policy-policy-0-container-count': '2' 'x-timestamp': '1542330348.41749' ...
Swift#updateMetadata(headers)
Update account metadata
await client
SwiftContainer
class
- let container1 = client
SwiftContainer#list()
Get objects list in container
let objects = await container1
// objects hash: 'd8198139ca62b0333ead15afbb50f99d' last_modified: '2018-11-17T08:51:34.103090' bytes: 22 name: 'a.txt' content_type: 'text/plain' hash: 'd41d8cd98f00b204e9800998ecf8427e' last_modified: '2018-11-17T08:51:34.160090' bytes: 30 name: 'b.txt' content_type: 'text/plain'
SwiftContainer#create(objectName, stream)
Put object
const src = fslet object = await container1console; // `SwiftObject` instance
SwiftContainer#delete(objectName)
Delete object
await container1
SwiftContainer#metadata()
let metadata = await container1
SwiftContainer#updateMetadata()
await container1
SwiftObject
class
- let object = container1
SwiftObject#write(stream)
let object = container1let dstStream = fsobject
SwiftObject#copy(dstContainer, dstObjectName, headers)
let object = clientawait object
SwiftObject#metadata()
let metadata = await object
SwiftObject#updateMetadata()
await object