openblox
Version:
Roblox API Wrapper For Both Classic And OpenCloud APIs.
137 lines (136 loc) • 5.18 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var assets_exports = {};
__export(assets_exports, {
assetInfo: () => assetInfo,
assetOfVersion: () => assetOfVersion,
assetVersions: () => assetVersions,
createAsset: () => createAsset,
rollbackAssetVersion: () => rollbackAssetVersion,
updateAsset: () => updateAsset
});
module.exports = __toCommonJS(assets_exports);
var import_apiGroup = require("../../apiGroup");
var import_utils = require("../../../utils/utils");
var import_file = require("../../../file");
const { createApiMethod } = (0, import_apiGroup.createApiGroup)({ name: "Assets", baseUrl: "https://apis.roblox.com/assets" });
const assetsDefaultFields = "assetType,assetId,creationContext,description,displayName,path,revisionId,revisionCreateTime,moderationResult,icon,previews,state";
const prettifyAssetData = (rawData) => (0, import_utils.cloneAndMutateObject)(rawData, (obj) => {
const revisionCreateTime = obj.revisionCreateTime;
if (revisionCreateTime) obj.revisionCreateTime = new Date(revisionCreateTime);
});
const prettifyLongRunningAssetData = (rawData) => {
const response = rawData.response;
if (!response) return rawData;
return {
...rawData,
response: prettifyAssetData(response)
};
};
const formDataWithAssetFile = async (formData, assetType, file, fileName) => {
const rawAssetType = assetType == "Audio" ? "auto" : assetType == "Decal" ? "image" : assetType == "Model" ? "model" : "video";
const fileIsBuffer = file instanceof Buffer;
const extension = /.+\.(.+)/.exec(fileIsBuffer ? fileName : file)?.[1];
const typeExtension = extension == "mp3" ? "mpeg" : extension;
formData.append(
"fileContent",
new Blob(
[fileIsBuffer ? file : await (0, import_file.readFile)(file)],
{ type: `${rawAssetType}/${typeExtension}` }
),
`${rawAssetType}.${extension}`
);
return formData;
};
const assetInfo = createApiMethod(async ({ assetId, fields }) => ({
method: "GET",
path: `/v1/assets/${assetId}`,
searchParams: { readMask: fields || assetsDefaultFields },
name: `assetInfo`,
formatRawDataFn: prettifyAssetData
}));
const createAsset = createApiMethod(async ({ displayName, description, userId, groupId, assetType, file, fileName, expectedPrice, previews }) => ({
method: "POST",
path: `/v1/assets`,
name: `createAsset`,
formData: await formDataWithAssetFile(
(0, import_utils.formDataBuilder)().append("request", JSON.stringify({
displayName,
description,
assetType,
previews,
creationContext: { creator: userId ? { userId } : { groupId }, expectedPrice }
})),
assetType,
file,
fileName
),
formatRawDataFn: prettifyLongRunningAssetData
}));
const updateAsset = createApiMethod(async ({ assetId, assetType, displayName, description, expectedPrice, file, fileName, previews }) => ({
method: "PATCH",
path: `/v1/assets/${assetId}`,
name: `updateAsset`,
formData: assetType && file ? await formDataWithAssetFile(
(0, import_utils.formDataBuilder)().append("request", JSON.stringify({
assetId,
displayName,
description,
previews,
creationContext: expectedPrice ? { expectedPrice } : void 0
})),
assetType,
file,
fileName
) : (0, import_utils.formDataBuilder)().append("request", JSON.stringify({
assetId,
displayName,
description,
previews,
creationContext: expectedPrice ? { expectedPrice } : void 0
})),
formatRawDataFn: prettifyLongRunningAssetData
}));
const assetOfVersion = createApiMethod(async ({ assetId, version }) => ({
method: "GET",
path: `/v1/assets/${assetId}/versions/${version}`,
name: `assetOfVersion`
}));
const assetVersions = createApiMethod(async ({ assetId, limit, cursor }) => ({
method: "GET",
path: `/v1/assets/${assetId}/versions`,
searchParams: { maxPageSize: limit, pageToken: cursor },
name: `assetVersions`,
formatRawDataFn: ({ assetVersions: assetVersions2 }) => assetVersions2
}));
const rollbackAssetVersion = createApiMethod(async ({ assetId, version }) => ({
method: "POST",
path: `/v1/assets/${assetId}/versions:rollback`,
name: `rollbackAssetVersion`,
body: { assetVersion: `assets/${assetId}/versions/${version}` }
}));
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
assetInfo,
assetOfVersion,
assetVersions,
createAsset,
rollbackAssetVersion,
updateAsset
});
;