Spaces:
Running
Running
Update server.mjs
Browse files- server.mjs +4 -4
server.mjs
CHANGED
|
@@ -55,7 +55,7 @@ function getSignatureKey(secret, dateStamp) {
|
|
| 55 |
}
|
| 56 |
|
| 57 |
function toAmzDate(date) {
|
| 58 |
-
return date.toISOString().replace(/[:-]|\
|
| 59 |
}
|
| 60 |
|
| 61 |
function buildR2PresignedPutUrl(key, contentType) {
|
|
@@ -75,15 +75,15 @@ function buildR2PresignedPutUrl(key, contentType) {
|
|
| 75 |
"X-Amz-SignedHeaders": signedHeaders
|
| 76 |
};
|
| 77 |
const canonicalQuery = canonicalQueryString(query);
|
| 78 |
-
const canonicalHeaders = "content-type:" + contentType.trim().replace(/\
|
| 79 |
-
const canonicalRequest = ["PUT", canonicalUri, canonicalQuery, canonicalHeaders, signedHeaders, "UNSIGNED-PAYLOAD"].join("\
|
| 80 |
const stringToSign = ["AWS4-HMAC-SHA256", amzDate, credentialScope, sha256Hex(canonicalRequest)].join("\\n");
|
| 81 |
const signature = hmacHex(getSignatureKey(R2_SECRET_ACCESS_KEY, dateStamp), stringToSign);
|
| 82 |
return "https://" + host + canonicalUri + "?" + canonicalQuery + "&X-Amz-Signature=" + signature;
|
| 83 |
}
|
| 84 |
|
| 85 |
function r2PublicUrl(key) {
|
| 86 |
-
return R2_PUBLIC_BASE_URL.replace(/\
|
| 87 |
}
|
| 88 |
|
| 89 |
async function uploadToR2(file, key) {
|
|
|
|
| 55 |
}
|
| 56 |
|
| 57 |
function toAmzDate(date) {
|
| 58 |
+
return date.toISOString().replace(/[:-]|\.\d{3}/g, "").slice(0, 15) + "Z";
|
| 59 |
}
|
| 60 |
|
| 61 |
function buildR2PresignedPutUrl(key, contentType) {
|
|
|
|
| 75 |
"X-Amz-SignedHeaders": signedHeaders
|
| 76 |
};
|
| 77 |
const canonicalQuery = canonicalQueryString(query);
|
| 78 |
+
const canonicalHeaders = "content-type:" + contentType.trim().replace(/\s+/g, " ") + "\n" + "host:" + host + "\n";
|
| 79 |
+
const canonicalRequest = ["PUT", canonicalUri, canonicalQuery, canonicalHeaders, signedHeaders, "UNSIGNED-PAYLOAD"].join("\n");
|
| 80 |
const stringToSign = ["AWS4-HMAC-SHA256", amzDate, credentialScope, sha256Hex(canonicalRequest)].join("\\n");
|
| 81 |
const signature = hmacHex(getSignatureKey(R2_SECRET_ACCESS_KEY, dateStamp), stringToSign);
|
| 82 |
return "https://" + host + canonicalUri + "?" + canonicalQuery + "&X-Amz-Signature=" + signature;
|
| 83 |
}
|
| 84 |
|
| 85 |
function r2PublicUrl(key) {
|
| 86 |
+
return R2_PUBLIC_BASE_URL.replace(/\/+$/, "") + "/" + encodePath(key);
|
| 87 |
}
|
| 88 |
|
| 89 |
async function uploadToR2(file, key) {
|