@ptrumpis/snap-camerakit-bridge
Version:
Library for calling the Snapchat Camera-Kit API in Node.js Hackerman style 🤓
54 lines (45 loc) • 2.16 kB
JavaScript
import LensFormatter from "./LensFormatter.js";
class SnapCameraFormatter extends LensFormatter {
static format(lens) {
if (!lens) {
return {};
}
const lensId = lens.id || "";
const deeplinkUrl = lens.snapcode?.deepLink || lens.scannable?.snapcodeDeeplink || "";
const uuid = SnapCameraFormatter.extractUuidFromDeeplink(deeplinkUrl) || "";
let result = {
unlockable_id: lensId,
group_id: lens.groupId || "",
uuid: uuid,
deeplink: deeplinkUrl || "",
lens_name: (lens.name || "")?.trim(),
user_display_name: (lens.lensCreator?.displayName || "")?.trim(),
snapcode_url: lens.snapcode?.imageUrl || lens.scannable?.snapcodeImageUrl || SnapCameraFormatter.snapcodeUrl(uuid) || "",
icon_url: lens.iconUrl || lens.content?.iconUrl || lens.content?.iconUrlBolt || "",
thumbnail_media_url: lens.preview?.imageUrl || lens.content?.preview?.imageUrl || lens.previewImageUrl || lens.lensPreviewImageUrl || "",
hint_id: lens.content?.defaultHintId || "",
};
if (lens.content?.preview && typeof lens.content.preview === 'object' && Object.keys(lens.content.preview).length) {
result.image_sequence = {
url_pattern: lens.content.preview?.imageSequenceWebpUrlPattern || "",
size: lens.content.preview?.imageSequenceSize || 0,
frame_interval_ms: 300,
}
}
if (Array.isArray(lens.content?.assetManifest) && lens.content.assetManifest.length) {
result.assets = lens.content.assetManifest.map((manifest) => {
return manifest.id;
});
}
if (lens.content?.lnsUrl || lens.content?.lnsUrlBolt) {
Object.assign(result, {
lens_id: lensId || "",
lens_url: lens.content?.lnsUrl || lens.content?.lnsUrlBolt || "",
sha256: lens.content?.lnsSha256 || "",
});
}
return result;
}
}
export { SnapCameraFormatter };
export default SnapCameraFormatter;