From d0581e91b3adca5f9c81ab794d1f5d01bcb5c6a5 Mon Sep 17 00:00:00 2001 From: mubarak23 Date: Wed, 26 Jun 2024 12:31:58 +0100 Subject: [PATCH] initial implementation of token uri base 64 --- Scarb.toml | 1 + src/namespaces/handles.cairo | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Scarb.toml b/Scarb.toml index 44d2bd3..24353bb 100644 --- a/Scarb.toml +++ b/Scarb.toml @@ -13,6 +13,7 @@ keywords = ["Karst", "SocialFi", "tokenbound", "cairo", "contracts", "starknet"] starknet = "2.6.3" openzeppelin = { git = "https://github.com/OpenZeppelin/cairo-contracts.git", tag = "v0.11.0" } token_bound_accounts= { git = "https://github.com/Starknet-Africa-Edu/TBA", tag = "v0.3.0" } +alexandria_bytes = { git = "https://github.com/keep-starknet-strange/alexandria.git", rev = "c1a604e" } [dev-dependencies] snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry", tag = "v0.22.0" } diff --git a/src/namespaces/handles.cairo b/src/namespaces/handles.cairo index 59586fb..f16f138 100644 --- a/src/namespaces/handles.cairo +++ b/src/namespaces/handles.cairo @@ -5,7 +5,9 @@ use openzeppelin::{ token::erc721::{ERC721Component::{ERC721Metadata, ERC721Mixin, HasComponent}}, introspection::src5::SRC5Component, }; - +use alexandria_bytes::{Bytes, BytesTrait}; +// use alexandria_encoding::{ BytesTrait}; +// use starknet::ByteArray; #[starknet::interface] trait IERC721Metadata { @@ -211,10 +213,26 @@ mod Handles { self: @ContractState, token_id: u256, local_name: felt252 ) -> ByteArray { // TODO - return "TODO"; + let bytes = BytesTrait::new(); + bytes.append(local_name); + bytes.append(token_id); + + let byte_array = bytes.read_u8(); + + let base64_encoded = alexandria_encoding::base64::encode(byte_array); + + let mut result_byte_array = ByteArray::new(); + for byte in base64_encoded { + result_byte_array.append_byte(byte); + } + let result_string = result_byte_array.to_string(); + + return result_string; + } } + // ************************************************************************* // PRIVATE FUNCTIONS // *************************************************************************