@lodashventure/medusa-upload-gcs 0.4.0 → 0.4.1
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.
|
@@ -4,6 +4,7 @@ exports.GcsFileService = void 0;
|
|
|
4
4
|
const storage_1 = require("@google-cloud/storage");
|
|
5
5
|
const utils_1 = require("@medusajs/framework/utils");
|
|
6
6
|
const uuid_1 = require("uuid");
|
|
7
|
+
const DEFAULT_GCS_PUBLIC_HOST = "https://storage.cloud.google.com";
|
|
7
8
|
class GcsFileService extends utils_1.AbstractFileProviderService {
|
|
8
9
|
constructor({ logger }, options) {
|
|
9
10
|
super();
|
|
@@ -29,19 +30,36 @@ class GcsFileService extends utils_1.AbstractFileProviderService {
|
|
|
29
30
|
//base public url for get file in internet (e.g. cdn url)
|
|
30
31
|
this.basePublicUrl_ = options.basePublicUrl || "";
|
|
31
32
|
}
|
|
33
|
+
normalizeBaseUrl(baseUrl) {
|
|
34
|
+
return baseUrl.replace(/\/+$/, "");
|
|
35
|
+
}
|
|
36
|
+
buildPublicUrlFromKey(key) {
|
|
37
|
+
const sanitizedKey = key.replace(/^\/+/, "");
|
|
38
|
+
const base = this.basePublicUrl_ && this.basePublicUrl_.trim().length > 0
|
|
39
|
+
? this.normalizeBaseUrl(this.basePublicUrl_)
|
|
40
|
+
: `${DEFAULT_GCS_PUBLIC_HOST}/${this.publicBucketName_}`;
|
|
41
|
+
return `${base}/${sanitizedKey}`;
|
|
42
|
+
}
|
|
43
|
+
extractFileIdentifier(googleCloudURL) {
|
|
44
|
+
const prefixes = [
|
|
45
|
+
`https://storage.googleapis.com/${this.publicBucketName_}/`,
|
|
46
|
+
`${DEFAULT_GCS_PUBLIC_HOST}/${this.publicBucketName_}/`,
|
|
47
|
+
];
|
|
48
|
+
for (const prefix of prefixes) {
|
|
49
|
+
if (googleCloudURL.startsWith(prefix)) {
|
|
50
|
+
return googleCloudURL.slice(prefix.length);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return googleCloudURL;
|
|
54
|
+
}
|
|
32
55
|
/**
|
|
33
56
|
* This method is used to transform the Google Cloud URL to a CDN URL. (Only for public bucket)
|
|
34
57
|
* @param googleCloudURL
|
|
35
58
|
* @returns
|
|
36
59
|
*/
|
|
37
60
|
transformGoogleCloudURLtoCDN(googleCloudURL) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// Extract the file identifier from the Google Cloud URL
|
|
41
|
-
const fileIdentifier = googleCloudURL.replace(googleCloudBaseURL, "");
|
|
42
|
-
// Construct the CDN URL
|
|
43
|
-
const cdnURL = `${this.basePublicUrl_}${fileIdentifier}`;
|
|
44
|
-
return cdnURL;
|
|
61
|
+
const fileIdentifier = this.extractFileIdentifier(googleCloudURL);
|
|
62
|
+
return this.buildPublicUrlFromKey(fileIdentifier);
|
|
45
63
|
}
|
|
46
64
|
/**
|
|
47
65
|
* This method is used to upload file(public bucket) to cloud storage.
|
|
@@ -62,7 +80,7 @@ class GcsFileService extends utils_1.AbstractFileProviderService {
|
|
|
62
80
|
await file.save(contentBuffer, {
|
|
63
81
|
public: true,
|
|
64
82
|
});
|
|
65
|
-
const publicUrl =
|
|
83
|
+
const publicUrl = this.buildPublicUrlFromKey(destination);
|
|
66
84
|
return {
|
|
67
85
|
url: publicUrl,
|
|
68
86
|
key: destination,
|
|
@@ -121,4 +139,4 @@ class GcsFileService extends utils_1.AbstractFileProviderService {
|
|
|
121
139
|
}
|
|
122
140
|
exports.GcsFileService = GcsFileService;
|
|
123
141
|
GcsFileService.identifier = "gcs";
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2NzLWZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2ZpbGUtZ2NzL3NlcnZpY2UvZ2NzLWZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTRFO0FBVzVFLHFEQUdtQztBQUluQywrQkFBb0M7QUFFcEMsTUFBTSx1QkFBdUIsR0FBRyxrQ0FBa0MsQ0FBQztBQWtCbkUsTUFBYSxjQUFlLFNBQVEsbUNBQTJCO0lBUzdELFlBQVksRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPO1FBQzdCLEtBQUssRUFBRSxDQUFDO1FBTEEsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFNcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsc0JBQXNCO1FBQ3RCLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxpQkFBTyxDQUFDO2dCQUNqQyxXQUFXLEVBQUU7b0JBQ1gsWUFBWSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWTtvQkFDOUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVztpQkFDN0M7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLHFDQUFxQztZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksaUJBQU8sRUFBRSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztRQUVsRCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztRQUVwRCx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FB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
|
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ module.exports = defineConfig({
|
|
|
37
37
|
CLIENT_EMAIL=<client@email.com>
|
|
38
38
|
PRIVATE_KEY="<private-key>"
|
|
39
39
|
BUCKET_NAME=<bucket-name>
|
|
40
|
-
GCP_STORAGE_BASE_PUBLIC_URL=<base-public-url, mostly https://storage.
|
|
40
|
+
GCP_STORAGE_BASE_PUBLIC_URL=<base-public-url, mostly https://storage.cloud.google.com>
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
1. all done now just start your medusa backend
|