UNPKG

@nurbxfit/cloudflare-r2

Version:

Simple nodejs client SDK for cloudflare r2

133 lines (132 loc) 5.43 kB
"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;