UNPKG

@itwin/object-storage-google

Version:

Object storage implementation using Google Cloud Storage

67 lines 3.97 kB
"use strict"; 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