@nurbxfit/cloudflare-r2
Version:
Simple nodejs client SDK for cloudflare r2
133 lines (132 loc) • 5.43 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
class CloudflareR2Client {
constructor(httpClient, endpoint, accountId, token) {
this.httpClient = httpClient;
this.endpoint = endpoint;
this.accountId = accountId;
this.token = token;
this.endpoint = endpoint + `/client/v4/accounts/${this.accountId}/r2`;
}
getHeaders() {
return {
"Content-Type": "application/json",
Authorization: `Bearer ${this.token}`,
};
}
getBucketAsync(bucketName) {
return __awaiter(this, void 0, void 0, function* () {
const url = new URL(`${this.endpoint}/buckets/${bucketName}`);
return this.httpClient.request(url, {
method: "GET",
headers: this.getHeaders(),
});
});
}
listBucketsAsync() {
return __awaiter(this, void 0, void 0, function* () {
const url = new URL(`${this.endpoint}/buckets`);
return this.httpClient.request(url, {
method: "GET",
headers: this.getHeaders(),
});
});
}
createBucketAsync(bucketOptions) {
return __awaiter(this, void 0, void 0, function* () {
const url = new URL(`${this.endpoint}/buckets`);
return this.httpClient.request(url, {
method: "POST",
headers: this.getHeaders(),
body: JSON.stringify(bucketOptions),
});
});
}
deleteBucketAsync(bucketName) {
return __awaiter(this, void 0, void 0, function* () {
const url = new URL(`${this.endpoint}/buckets/${bucketName}`);
return this.httpClient.request(url, {
method: "DELETE",
headers: this.getHeaders(),
});
});
}
getBucketCustomDomains(bucketName) {
return __awaiter(this, void 0, void 0, function* () {
const url = new URL(`${this.endpoint}/buckets/${bucketName}/custom_domains`);
return this.httpClient.request(url, {
method: "GET",
headers: this.getHeaders(),
});
});
}
getBucketObjects(bucketName) {
return __awaiter(this, void 0, void 0, function* () {
const url = new URL(`${this.endpoint}/buckets/${bucketName}/objects`);
return this.httpClient.request(url, {
method: "GET",
headers: this.getHeaders(),
});
});
}
searchBucketObjects(bucketName, objectKey) {
return __awaiter(this, void 0, void 0, function* () {
const url = new URL(`${this.endpoint}/buckets/${bucketName}/objects?delimiter=%2F&prefix=${objectKey}`);
return this.httpClient.request(url, {
method: "GET",
headers: this.getHeaders(),
});
});
}
getBucketObject(bucketName, objectKey) {
return __awaiter(this, void 0, void 0, function* () {
const url = new URL(`${this.endpoint}/buckets/${bucketName}/objects/${objectKey}`);
return this.httpClient.request(url, {
method: "GET",
headers: this.getHeaders(),
});
});
}
putBucketObject(bucketName, objectKey, objectBin, contentType) {
return __awaiter(this, void 0, void 0, function* () {
const url = new URL(`${this.endpoint}/buckets/${bucketName}/objects/${objectKey}`);
const headers = this.getHeaders();
headers["Content-Type"] = contentType !== null && contentType !== void 0 ? contentType : "application/octet-stream";
return this.httpClient.request(url, {
method: "PUT",
headers,
body: objectBin,
});
});
}
deleteBucketObject(bucketName, objectKey) {
return __awaiter(this, void 0, void 0, function* () {
const url = new URL(`${this.endpoint}/buckets/${bucketName}/objects`);
return this.httpClient.request(url, {
method: "DELETE",
headers: this.getHeaders(),
body: JSON.stringify([objectKey]),
});
});
}
deleteBucketObjects(bucketName, objectKeys) {
return __awaiter(this, void 0, void 0, function* () {
const url = new URL(`${this.endpoint}/buckets/${bucketName}/objects`);
return this.httpClient.request(url, {
method: "DELETE",
headers: this.getHeaders(),
body: JSON.stringify(objectKeys),
});
});
}
}
exports.default = CloudflareR2Client;