@itwin/object-storage-google
Version:
Object storage implementation using Google Cloud Storage
67 lines • 3.97 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GoogleFrontendStorage = void 0;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
const inversify_1 = require("inversify");
const internal_1 = require("@itwin/object-storage-core/lib/common/internal");
const frontend_1 = require("@itwin/object-storage-core/lib/frontend");
const internal_2 = require("@itwin/object-storage-core/lib/frontend/internal");
let GoogleFrontendStorage = class GoogleFrontendStorage extends frontend_1.FrontendStorage {
constructor() {
super();
}
async download(input) {
if ((0, internal_1.instanceOfUrlTransferInput)(input))
return (0, internal_2.downloadFromUrlFrontend)(input);
(0, internal_1.assertRelativeDirectory)(input.reference.relativeDirectory);
const updatedInput = {
url: `https://storage.googleapis.com/storage/v1/b/${input.transferConfig.bucketName}/o/${encodeURIComponent(this.objectName(input.reference))}?alt=media`,
transferType: input.transferType,
};
return (0, internal_2.downloadFromUrlFrontend)(updatedInput, {
Authorization: input.transferConfig.authentication,
});
}
objectName(reference) {
return (0, internal_1.buildObjectKey)(reference);
}
async upload(input) {
const { data } = input;
if ((0, internal_1.instanceOfUrlTransferInput)(input))
return (0, internal_2.uploadToUrlFrontend)(input.url, data, "PUT");
(0, internal_1.assertRelativeDirectory)(input.reference.relativeDirectory);
const url = `https://storage.googleapis.com/upload/storage/v1/b/${input.transferConfig.bucketName}/o?uploadType=media&name=${this.objectName(input.reference)}`;
return (0, internal_2.uploadToUrlFrontend)(url, input.data, "POST", {
Authorization: input.transferConfig.authentication,
"Content-Type": "application/octet-stream",
});
}
// eslint-disable-next-line @typescript-eslint/require-await
async uploadInMultipleParts(input) {
(0, internal_1.assertRelativeDirectory)(input.reference.relativeDirectory);
const url = `https://storage.googleapis.com/upload/storage/v1/b/${input.transferConfig.bucketName}/o?uploadType=media&name=${this.objectName(input.reference)}`;
const data = await (0, internal_2.streamToTransferTypeFrontend)(input.data, "buffer");
return (0, internal_2.uploadToUrlFrontend)(url, data, "POST", {
Authorization: input.transferConfig.authentication,
"Content-Type": "application/octet-stream",
});
}
};
exports.GoogleFrontendStorage = GoogleFrontendStorage;
exports.GoogleFrontendStorage = GoogleFrontendStorage = __decorate([
(0, inversify_1.injectable)(),
__metadata("design:paramtypes", [])
], GoogleFrontendStorage);
//# sourceMappingURL=GoogleFrontendStorage.js.map