@things-factory/attachment-base 4.0.26 → 4.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const v4_1 = __importDefault(require("uuid/v4"));
|
|
7
|
+
const aws_sdk_1 = __importDefault(require("aws-sdk"));
|
|
8
|
+
const env_1 = require("@things-factory/env");
|
|
9
|
+
const { PassThrough } = require('stream');
|
|
10
|
+
const mime = require('mime');
|
|
11
|
+
const { fs } = require('memfs');
|
|
12
|
+
const attachment_const_1 = require("./attachment-const");
|
|
13
|
+
if (attachment_const_1.STORAGE && attachment_const_1.STORAGE.type == 's3') {
|
|
14
|
+
const S3 = new aws_sdk_1.default.S3({
|
|
15
|
+
accessKeyId: attachment_const_1.STORAGE.accessKeyId,
|
|
16
|
+
secretAccessKey: attachment_const_1.STORAGE.secretAccessKey
|
|
17
|
+
});
|
|
18
|
+
/* upload file */
|
|
19
|
+
attachment_const_1.STORAGE.uploadFile = ({ stream, filename }) => {
|
|
20
|
+
const id = (0, v4_1.default)();
|
|
21
|
+
const ext = filename.split('.').pop();
|
|
22
|
+
const key = ext ? `${id}.${ext}` : id;
|
|
23
|
+
var size = 0;
|
|
24
|
+
return new Promise((resolve, reject) => stream
|
|
25
|
+
.pipe((() => {
|
|
26
|
+
var pass = new PassThrough();
|
|
27
|
+
S3.upload({
|
|
28
|
+
Bucket: attachment_const_1.STORAGE.bucketName,
|
|
29
|
+
Key: key,
|
|
30
|
+
Body: pass
|
|
31
|
+
}, (err, data) => (err ? reject(err) : resolve({ id, path: key, size })));
|
|
32
|
+
// Response data from S3
|
|
33
|
+
// {
|
|
34
|
+
// ETag:"b2b068edcc5517a75e1119c785e1cf87",
|
|
35
|
+
// Location:"https://opa-one.s3.amazonaws.com/873af101-4e92-4164-b738-062af5b2413b.png",
|
|
36
|
+
// key:"873af101-4e92-4164-b738-062af5b2413b.png",
|
|
37
|
+
// Key:"873af101-4e92-4164-b738-062af5b2413b.png",
|
|
38
|
+
// Bucket:"opa-one"
|
|
39
|
+
// }
|
|
40
|
+
return pass;
|
|
41
|
+
})())
|
|
42
|
+
.on('error', error => reject(error))
|
|
43
|
+
.on('data', chunk => (size += chunk.length)));
|
|
44
|
+
};
|
|
45
|
+
attachment_const_1.STORAGE.deleteFile = path => {
|
|
46
|
+
return new Promise((resolve, reject) => S3.deleteObject({
|
|
47
|
+
Bucket: attachment_const_1.STORAGE.bucketName,
|
|
48
|
+
Key: path
|
|
49
|
+
}, (err, data) => (err ? reject(err) : resolve(data))));
|
|
50
|
+
};
|
|
51
|
+
/* creating bucket */
|
|
52
|
+
// s3.createBucket(
|
|
53
|
+
// {
|
|
54
|
+
// Bucket: STORAGE.bucketName,
|
|
55
|
+
// CreateBucketConfiguration: {
|
|
56
|
+
// // Set your region here
|
|
57
|
+
// LocationConstraint: 'eu-west-1'
|
|
58
|
+
// }
|
|
59
|
+
// },
|
|
60
|
+
// function(err, data) {
|
|
61
|
+
// if (err) console.log(err, err.stack)
|
|
62
|
+
// else console.log('Bucket Created Successfully', data.Location)
|
|
63
|
+
// }
|
|
64
|
+
// )
|
|
65
|
+
/* TODO Streaming to Streaming 으로 구현하라. */
|
|
66
|
+
attachment_const_1.STORAGE.sendFile = async (context, attachment, next) => {
|
|
67
|
+
const result = await S3.getObject({
|
|
68
|
+
Bucket: attachment_const_1.STORAGE.bucketName,
|
|
69
|
+
Key: attachment
|
|
70
|
+
}).promise();
|
|
71
|
+
fs.writeFileSync(`/${attachment}`, result.Body);
|
|
72
|
+
context.set({
|
|
73
|
+
'Content-Length': result.ContentLength,
|
|
74
|
+
'Content-Type': mime.getType(attachment),
|
|
75
|
+
'Last-Modified': result.LastModified,
|
|
76
|
+
ETag: result.ETag,
|
|
77
|
+
'Cache-Control': 'public, max-age=31556926'
|
|
78
|
+
});
|
|
79
|
+
context.body = await fs.createReadStream(`/${attachment}`);
|
|
80
|
+
};
|
|
81
|
+
attachment_const_1.STORAGE.readFile = async (attachment, encoding) => {
|
|
82
|
+
const result = await S3.getObject({
|
|
83
|
+
Bucket: attachment_const_1.STORAGE.bucketName,
|
|
84
|
+
Key: attachment
|
|
85
|
+
}).promise();
|
|
86
|
+
var body = result.Body;
|
|
87
|
+
if (encoding) {
|
|
88
|
+
return body.toString(encoding);
|
|
89
|
+
}
|
|
90
|
+
return body;
|
|
91
|
+
};
|
|
92
|
+
env_1.logger.info('S3 Bucket Storage is Ready.');
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=storage-s3-v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-s3-v2.js","sourceRoot":"","sources":["../server/storage-s3-v2.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/attachment-base",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.31",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
"migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@things-factory/auth-base": "^4.0.
|
|
28
|
-
"@things-factory/env": "^4.0.
|
|
27
|
+
"@things-factory/auth-base": "^4.0.31",
|
|
28
|
+
"@things-factory/env": "^4.0.31",
|
|
29
29
|
"aws-sdk": "^2.960.0",
|
|
30
30
|
"memfs": "^3.0.1",
|
|
31
31
|
"mime": "^2.4.4"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "6c021ffdeacc9d123298528f6bba91f61389f33d"
|
|
34
34
|
}
|