image-optimizer-s3-fastcodeco
Version:
IMAGE OPTIMIZER FASTCODE CO --
76 lines • 2.7 kB
JavaScript
;
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 });
exports.uploadS3 = void 0;
const client_s3_1 = require("@aws-sdk/client-s3");
/**
* Handle upload to S3
*
*/
class uploadS3 {
/**
*
* @param region
* @param accessKey
* @param secretKey
* @param bucket_name
* @param aws_url
*/
constructor(region, accessKey, secretKey, bucket_name, aws_url) {
this.region = region;
this.accessKey = accessKey;
this.secretKey = secretKey;
this.bucket_name = bucket_name;
this.aws_url = aws_url || "https://{{bucket_name}}.s3.{{region}}.amazonaws.com";
}
/**
*
* @returns
*/
s3Client() {
const clientParams = {
region: this.region,
credentials: {
accessKeyId: this.accessKey,
secretAccessKey: this.secretKey
}
};
return new client_s3_1.S3Client(clientParams);
}
/**
* @function
* @name uploadFileAWSService
* @description Service to upload a file to AWS.
* @param { Buffer } buffer
* @param { string } key
* @returns { Promise }
*/
upload(buffer, filename) {
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
try {
const client = this.s3Client();
const uploadParams = {
Bucket: this.bucket_name,
Key: filename,
Body: buffer
};
yield client.send(new client_s3_1.PutObjectCommand(uploadParams));
const url = `${this.aws_url.replace("{{bucket_name}}", this.bucket_name).replace("{{region}}", this.region)}/${filename}`;
resolve({ ok: true, url });
}
catch (error) {
reject({ ok: false, error: error });
}
}));
}
}
exports.uploadS3 = uploadS3;
//# sourceMappingURL=uploadAwss3.js.map