SIGN IN SIGN UP

Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.

0 0 1 Java
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import { unlink, readFile } from "node:fs/promises";
import {
readdirSync,
createWriteStream,
readFileSync,
writeFileSync,
existsSync,
mkdirSync,
} from "node:fs";
import archiver from "archiver";
import { fileURLToPath } from "node:url";
import { logger } from "./util-log.js";
import { splitMapTrim } from "./util-string.js";
/**
* @param {string} fileNames
*/
export const deleteFiles = (fileNames) => Promise.all(fileNames.map(unlink));
S3 Cleanup (#4475) * move and rename s3 files * refactor copy-object example, add tests, clean up metadata * refactor create-bucket example, add tests, clean up metadata * refactor delete-bucket-policy example, add tests, clean up metadata * refactor put-bucket-website example, add tests, clean up metadata * refactor delete-bucket-website example, add tests, clean up metadata * refactor delete-bucket example, add tests, clean up metadata * refactor put-object example, add tests, clean up metadata * refactor delete-object example, add tests, clean up metadata * refactor put-bucket-policy example, add tests, clean up metadata * refactor put-bucket-cors example, add tests, clean up metadata * refactor get-bucket-cors example, add tests, clean up metadata * refactor get-bucket-policy example, add tests, clean up metadata * refactor put-bucket-acl, add test, update metadata * refactor list-objects, add test, update metadata * refactor list-buckets, add test, update metadata * refactor get-object, add test, update metadata * refactor get-bucket-website, add test, update metadata * refactor delete-objects, add test, update metadata * start basic scenario * add upload, list, copy, delete, and empty steps to s3 example * add upload, list, copy, delete, and empty steps to s3 example * finish basic scenario * fix malformed snippets * clean up some excerpt descriptions * update multipart and create/list/delete scenarios * update presigned url examples * update README * update list-objects to handle over 1000 objects * add web-example and test out deprecating snippets * add readme reference to new media items * copy editing
2023-03-01 15:47:39 -05:00
// snippet-start:[javascript.v3.utils.dirnameFromMetaUrl]
export const dirnameFromMetaUrl = (metaUrl) =>
fileURLToPath(new URL(".", metaUrl));
S3 Cleanup (#4475) * move and rename s3 files * refactor copy-object example, add tests, clean up metadata * refactor create-bucket example, add tests, clean up metadata * refactor delete-bucket-policy example, add tests, clean up metadata * refactor put-bucket-website example, add tests, clean up metadata * refactor delete-bucket-website example, add tests, clean up metadata * refactor delete-bucket example, add tests, clean up metadata * refactor put-object example, add tests, clean up metadata * refactor delete-object example, add tests, clean up metadata * refactor put-bucket-policy example, add tests, clean up metadata * refactor put-bucket-cors example, add tests, clean up metadata * refactor get-bucket-cors example, add tests, clean up metadata * refactor get-bucket-policy example, add tests, clean up metadata * refactor put-bucket-acl, add test, update metadata * refactor list-objects, add test, update metadata * refactor list-buckets, add test, update metadata * refactor get-object, add test, update metadata * refactor get-bucket-website, add test, update metadata * refactor delete-objects, add test, update metadata * start basic scenario * add upload, list, copy, delete, and empty steps to s3 example * add upload, list, copy, delete, and empty steps to s3 example * finish basic scenario * fix malformed snippets * clean up some excerpt descriptions * update multipart and create/list/delete scenarios * update presigned url examples * update README * update list-objects to handle over 1000 objects * add web-example and test out deprecating snippets * add readme reference to new media items * copy editing
2023-03-01 15:47:39 -05:00
// snippet-end:[javascript.v3.utils.dirnameFromMetaUrl]
export const getNewLineDelimitedEntries = (str) =>
splitMapTrim("\n", getTmp(str) || "");
2022-10-13 09:37:43 -04:00
export const getTmp = (name) => {
try {
return readFileSync(`./${name}.tmp`, { encoding: "utf-8" });
} catch (e) {
return null;
}
};
S3 Cleanup (#4475) * move and rename s3 files * refactor copy-object example, add tests, clean up metadata * refactor create-bucket example, add tests, clean up metadata * refactor delete-bucket-policy example, add tests, clean up metadata * refactor put-bucket-website example, add tests, clean up metadata * refactor delete-bucket-website example, add tests, clean up metadata * refactor delete-bucket example, add tests, clean up metadata * refactor put-object example, add tests, clean up metadata * refactor delete-object example, add tests, clean up metadata * refactor put-bucket-policy example, add tests, clean up metadata * refactor put-bucket-cors example, add tests, clean up metadata * refactor get-bucket-cors example, add tests, clean up metadata * refactor get-bucket-policy example, add tests, clean up metadata * refactor put-bucket-acl, add test, update metadata * refactor list-objects, add test, update metadata * refactor list-buckets, add test, update metadata * refactor get-object, add test, update metadata * refactor get-bucket-website, add test, update metadata * refactor delete-objects, add test, update metadata * start basic scenario * add upload, list, copy, delete, and empty steps to s3 example * add upload, list, copy, delete, and empty steps to s3 example * finish basic scenario * fix malformed snippets * clean up some excerpt descriptions * update multipart and create/list/delete scenarios * update presigned url examples * update README * update list-objects to handle over 1000 objects * add web-example and test out deprecating snippets * add readme reference to new media items * copy editing
2023-03-01 15:47:39 -05:00
export const setTmp = (name, data) =>
writeFileSync(`./${name}.tmp`, data, { encoding: "utf-8" });
S3 Cleanup (#4475) * move and rename s3 files * refactor copy-object example, add tests, clean up metadata * refactor create-bucket example, add tests, clean up metadata * refactor delete-bucket-policy example, add tests, clean up metadata * refactor put-bucket-website example, add tests, clean up metadata * refactor delete-bucket-website example, add tests, clean up metadata * refactor delete-bucket example, add tests, clean up metadata * refactor put-object example, add tests, clean up metadata * refactor delete-object example, add tests, clean up metadata * refactor put-bucket-policy example, add tests, clean up metadata * refactor put-bucket-cors example, add tests, clean up metadata * refactor get-bucket-cors example, add tests, clean up metadata * refactor get-bucket-policy example, add tests, clean up metadata * refactor put-bucket-acl, add test, update metadata * refactor list-objects, add test, update metadata * refactor list-buckets, add test, update metadata * refactor get-object, add test, update metadata * refactor get-bucket-website, add test, update metadata * refactor delete-objects, add test, update metadata * start basic scenario * add upload, list, copy, delete, and empty steps to s3 example * add upload, list, copy, delete, and empty steps to s3 example * finish basic scenario * fix malformed snippets * clean up some excerpt descriptions * update multipart and create/list/delete scenarios * update presigned url examples * update README * update list-objects to handle over 1000 objects * add web-example and test out deprecating snippets * add readme reference to new media items * copy editing
2023-03-01 15:47:39 -05:00
export const handleZipWarning = (resolve) => (w) => {
logger.log(w);
resolve();
};
S3 Cleanup (#4475) * move and rename s3 files * refactor copy-object example, add tests, clean up metadata * refactor create-bucket example, add tests, clean up metadata * refactor delete-bucket-policy example, add tests, clean up metadata * refactor put-bucket-website example, add tests, clean up metadata * refactor delete-bucket-website example, add tests, clean up metadata * refactor delete-bucket example, add tests, clean up metadata * refactor put-object example, add tests, clean up metadata * refactor delete-object example, add tests, clean up metadata * refactor put-bucket-policy example, add tests, clean up metadata * refactor put-bucket-cors example, add tests, clean up metadata * refactor get-bucket-cors example, add tests, clean up metadata * refactor get-bucket-policy example, add tests, clean up metadata * refactor put-bucket-acl, add test, update metadata * refactor list-objects, add test, update metadata * refactor list-buckets, add test, update metadata * refactor get-object, add test, update metadata * refactor get-bucket-website, add test, update metadata * refactor delete-objects, add test, update metadata * start basic scenario * add upload, list, copy, delete, and empty steps to s3 example * add upload, list, copy, delete, and empty steps to s3 example * finish basic scenario * fix malformed snippets * clean up some excerpt descriptions * update multipart and create/list/delete scenarios * update presigned url examples * update README * update list-objects to handle over 1000 objects * add web-example and test out deprecating snippets * add readme reference to new media items * copy editing
2023-03-01 15:47:39 -05:00
export const handleZipEnd = (resolve, path) => async () => {
logger.log("Zipped successfully.");
const buffer = await readFile(path);
resolve(buffer);
};
export const makeDir = (dir) => (existsSync(dir) ? dir : mkdirSync(dir));
export const readLines = (path) => readFileSync(path).toString().split("\n");
export const readSubdirSync = (directory) =>
readdirSync(directory, { withFileTypes: true })
.filter((dirent) => dirent.isDirectory())
.map((dirent) => dirent.name);
S3 Cleanup (#4475) * move and rename s3 files * refactor copy-object example, add tests, clean up metadata * refactor create-bucket example, add tests, clean up metadata * refactor delete-bucket-policy example, add tests, clean up metadata * refactor put-bucket-website example, add tests, clean up metadata * refactor delete-bucket-website example, add tests, clean up metadata * refactor delete-bucket example, add tests, clean up metadata * refactor put-object example, add tests, clean up metadata * refactor delete-object example, add tests, clean up metadata * refactor put-bucket-policy example, add tests, clean up metadata * refactor put-bucket-cors example, add tests, clean up metadata * refactor get-bucket-cors example, add tests, clean up metadata * refactor get-bucket-policy example, add tests, clean up metadata * refactor put-bucket-acl, add test, update metadata * refactor list-objects, add test, update metadata * refactor list-buckets, add test, update metadata * refactor get-object, add test, update metadata * refactor get-bucket-website, add test, update metadata * refactor delete-objects, add test, update metadata * start basic scenario * add upload, list, copy, delete, and empty steps to s3 example * add upload, list, copy, delete, and empty steps to s3 example * finish basic scenario * fix malformed snippets * clean up some excerpt descriptions * update multipart and create/list/delete scenarios * update presigned url examples * update README * update list-objects to handle over 1000 objects * add web-example and test out deprecating snippets * add readme reference to new media items * copy editing
2023-03-01 15:47:39 -05:00
export const zip = (inputPath) =>
new Promise((resolve, reject) => {
try {
readdirSync(inputPath);
} catch (err) {
reject(
new Error(
`Cannot zip directory ${inputPath}. Directory doesn't exist.`,
),
);
return;
}
const archive = archiver("zip");
logger.log(`Zipping ${inputPath}...`);
const output = createWriteStream(`${inputPath}.zip`);
output.on("close", handleZipEnd(resolve, `${inputPath}.zip`));
archive.pipe(output);
archive.on("error", reject);
archive.on("warning", handleZipWarning(resolve));
archive.directory(inputPath, false);
archive.finalize();
});