From 292f2a69207c48611faa385ee1dcea471f6cd961 Mon Sep 17 00:00:00 2001 From: PavitraAgarwal21 Date: Sat, 3 Aug 2024 11:13:02 +0530 Subject: [PATCH 1/8] get_toke_uri without encoding base64 --- src/base/token_uris/profile_token_uri.cairo | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/base/token_uris/profile_token_uri.cairo b/src/base/token_uris/profile_token_uri.cairo index 2c98f7c..e63df19 100644 --- a/src/base/token_uris/profile_token_uri.cairo +++ b/src/base/token_uris/profile_token_uri.cairo @@ -1,10 +1,26 @@ // TODO: https://github.com/lens-protocol/core/blob/master/contracts/misc/token-uris/ProfileTokenURI.sol pub mod ProfileTokenUri { + use core::traits::TryInto; + use core::serde::Serde; use alexandria_bytes::{Bytes, BytesTrait}; use karst::base::utils::byte_array_extra::FeltTryIntoByteArray; + // use alexandria_encoding::base64::Base64FeltEncoder; + use core::integer::BoundedInt; + pub fn get_token_uri(token_id: u256, mint_timestamp: u64) -> ByteArray { - "TODO" + let mut svg = ArrayTrait::::new(); + let mut res: ByteArray = Default::default(); + svg.append(''); + while (!svg.is_empty()) { + let word: ByteArray = svg.pop_front().unwrap().try_into().unwrap(); + res.append(@word); + }; + println!("{:?} ", res); + return res; } } From 8965ad388e4d24192a8b2451e0caf94ce16aadc8 Mon Sep 17 00:00:00 2001 From: PavitraAgarwal21 Date: Sat, 3 Aug 2024 11:16:34 +0530 Subject: [PATCH 2/8] removing unused packages --- src/base/token_uris/profile_token_uri.cairo | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/base/token_uris/profile_token_uri.cairo b/src/base/token_uris/profile_token_uri.cairo index e63df19..49832f0 100644 --- a/src/base/token_uris/profile_token_uri.cairo +++ b/src/base/token_uris/profile_token_uri.cairo @@ -1,13 +1,8 @@ // TODO: https://github.com/lens-protocol/core/blob/master/contracts/misc/token-uris/ProfileTokenURI.sol pub mod ProfileTokenUri { - use core::traits::TryInto; - use core::serde::Serde; use alexandria_bytes::{Bytes, BytesTrait}; use karst::base::utils::byte_array_extra::FeltTryIntoByteArray; - // use alexandria_encoding::base64::Base64FeltEncoder; - use core::integer::BoundedInt; - pub fn get_token_uri(token_id: u256, mint_timestamp: u64) -> ByteArray { let mut svg = ArrayTrait::::new(); From 9beaa73d24c9f522ee248bdfbcea8cf668528fcc Mon Sep 17 00:00:00 2001 From: PavitraAgarwal21 Date: Thu, 8 Aug 2024 03:01:06 +0530 Subject: [PATCH 3/8] more modular --- src/base/token_uris/profile_token_uri.cairo | 79 +++++++++++---------- 1 file changed, 42 insertions(+), 37 deletions(-) diff --git a/src/base/token_uris/profile_token_uri.cairo b/src/base/token_uris/profile_token_uri.cairo index 2477173..afed149 100644 --- a/src/base/token_uris/profile_token_uri.cairo +++ b/src/base/token_uris/profile_token_uri.cairo @@ -1,56 +1,61 @@ // TODO: https://github.com/lens-protocol/core/blob/master/contracts/misc/token-uris/ProfileTokenURI.sol pub mod ProfileTokenUri { - use core::array::ArrayTrait; - use core::IndexView ; use alexandria_bytes::{Bytes, BytesTrait}; use karst::base::utils::byte_array_extra::FeltTryIntoByteArray; - use alexandria_encoding::base64::{Base64UrlEncoder }; - use alexandria_encoding::sol_abi::encode::{SolAbiEncodeTrait}; - use alexandria_encoding::sol_abi::sol_bytes::{SolBytesTrait}; - pub fn get_token_uri(token_id: u256, mint_timestamp: u64) -> ByteArray { - // this must be done into the byte array format - let mut tokenuri : ByteArray = Default::default(); - let baseuri = 'data:image/svg+xml;base64,'; - tokenuri.append(@baseuri.try_into().unwrap()); + use alexandria_encoding::base64::{Base64UrlEncoder}; + + fn get_svg() -> Array { let mut svg = ArrayTrait::::new(); - let mut res: ByteArray = Default::default(); svg.append(''); + svg + } + fn get_svg_base64_encode(ref svg: Array) -> ByteArray { + let mut res: ByteArray = Default::default(); + + // converting felt252 array to byte array while (!svg.is_empty()) { - let each_felt : felt252 = svg.pop_front().unwrap() ; - // println!("{:?}", svg.index(0)); + let each_felt: felt252 = svg.pop_front().unwrap(); let word: ByteArray = each_felt.try_into().unwrap(); res.append(@word); }; - println!("{:?} ", res); - println!("{:?} ", res.len()); - let res_len = res.len() ; - let mut res_encode = ArrayTrait::::new(); - let mut i = 0 ; - while i < res_len { - let mut res_data = res.at(i); - res_encode.append(res_data.unwrap()); - i += 1 ; - }; - println!("{:?} ", res_encode); - let mut encoded_val = Base64UrlEncoder::encode(res_encode); - //////// - let encoded_val_len = encoded_val.len() ; - let mut res_final : ByteArray = Default::default(); - let mut j = 0 ; - while j < encoded_val_len { - let encoded_val_data = encoded_val.at(j); - res_final.append_byte(*encoded_val_data); - j += 1 ; - }; - println!("{:?} ", res_final); - tokenuri.append(@res_final) ; - println!("{:?} ", tokenuri); + // converting the byte array to array of u8 + let mut res_arr_u8 = ArrayTrait::::new(); + let mut i = 0; + while i < res + .len() { + let mut res_data = res.at(i); + res_arr_u8.append(res_data.unwrap()); + i += 1; + }; + + // encoding the array of u8 to base64url + let mut encoded_val = Base64UrlEncoder::encode(res_arr_u8); + + // converting array of u8 to byte array + let mut res_final: ByteArray = Default::default(); + let mut j = 0; + while j < encoded_val + .len() { + let encoded_val_data = encoded_val.at(j); + res_final.append_byte(*encoded_val_data); + j += 1; + }; + res_final + } + + pub fn get_token_uri(token_id: u256, mint_timestamp: u64) -> ByteArray { + let baseuri = 'data:image/svg+xml;base64,'; + let mut svg = get_svg(); + let mut tokenuri: ByteArray = Default::default(); + // append the svg encoded value after the base uri + tokenuri.append(@baseuri.try_into().unwrap()); + tokenuri.append(@get_svg_base64_encode(ref svg)); tokenuri } } From 0d0c9145397bb600b7b9b8d0248e3e7183a84bfb Mon Sep 17 00:00:00 2001 From: PavitraAgarwal21 Date: Thu, 8 Aug 2024 03:17:21 +0530 Subject: [PATCH 4/8] get_svg fn signature update --- src/base/token_uris/profile_token_uri.cairo | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/base/token_uris/profile_token_uri.cairo b/src/base/token_uris/profile_token_uri.cairo index afed149..2eccf51 100644 --- a/src/base/token_uris/profile_token_uri.cairo +++ b/src/base/token_uris/profile_token_uri.cairo @@ -6,7 +6,8 @@ pub mod ProfileTokenUri { use karst::base::utils::byte_array_extra::FeltTryIntoByteArray; use alexandria_encoding::base64::{Base64UrlEncoder}; - fn get_svg() -> Array { + // get svg according to the token id and mint timestamp + fn get_svg(token_id: u256, mint_timestamp: u64) -> Array { let mut svg = ArrayTrait::::new(); svg.append(''); svg } - fn get_svg_base64_encode(ref svg: Array) -> ByteArray { + fn get_attributes(tokenid: u256, mint_timestamp: u64) -> Array { + let tokenid_felt: felt252 = tokenid.try_into().unwrap(); + let timestamp_felt: felt252 = mint_timestamp.try_into().unwrap(); + let tokenid_byte: ByteArray = tokenid_felt.try_into().unwrap(); + let tokenid_byte_len: felt252 = tokenid_byte.len().try_into().unwrap(); + let mut attributes = ArrayTrait::::new(); + let sample_traits = 'pavitra'; + attributes.append('","attributes":[{"display'); + attributes.append('_type":"number","trait_'); + attributes.append('type":"ID","value":"'); + attributes.append(tokenid_felt); + attributes.append('"},{"trait_type":"HEX '); + attributes.append('ID","value":"'); + attributes.append(tokenid_felt); // TODO to hex string + attributes.append('"},{"trait_type":"DIGITS"'); + attributes.append(',"value":"'); + attributes.append(tokenid_byte_len); + attributes.append('"},{"display_type":"date","trai'); + attributes.append('t_type":"MINTED AT","value":"'); + attributes.append(timestamp_felt); + attributes.append('"},'); + attributes.append(sample_traits); + attributes.append(']}'); + attributes + } + fn get_json(tokenid: u256, mint_timestamp: u64) -> Array { + let tokenid_felt: felt252 = tokenid.try_into().unwrap(); + let timestamp_felt: felt252 = mint_timestamp.try_into().unwrap(); + let mut json = ArrayTrait::::new(); + json.append('{"name":"Profile #'); + json.append(tokenid_felt); + json.append('","description":"Profile #'); + json.append(timestamp_felt); + json.append('","image":"data:image/svg'); + json.append('+xml;base64,'); + json + } + fn convert_into_byteArray(ref svg: Array) -> ByteArray { let mut res: ByteArray = Default::default(); - // converting felt252 array to byte array while (!svg.is_empty()) { let each_felt: felt252 = svg.pop_front().unwrap(); let word: ByteArray = each_felt.try_into().unwrap(); res.append(@word); }; + res + } - // converting the byte array to array of u8 + fn get_base64_encode(res: ByteArray) -> ByteArray { let mut res_arr_u8 = ArrayTrait::::new(); let mut i = 0; while i < res @@ -34,7 +72,6 @@ pub mod ProfileTokenUri { res_arr_u8.append(res_data.unwrap()); i += 1; }; - // encoding the array of u8 to base64url let mut encoded_val = Base64UrlEncoder::encode(res_arr_u8); @@ -53,10 +90,32 @@ pub mod ProfileTokenUri { pub fn get_token_uri(token_id: u256, mint_timestamp: u64) -> ByteArray { let baseuri = 'data:image/svg+xml;base64,'; let mut svg = get_svg(token_id, mint_timestamp); - let mut tokenuri: ByteArray = Default::default(); - // append the svg encoded value after the base uri - tokenuri.append(@baseuri.try_into().unwrap()); - tokenuri.append(@get_svg_base64_encode(ref svg)); - tokenuri + let mut svg_byte_array: ByteArray = convert_into_byteArray(ref svg); + let svg_encoded: ByteArray = get_base64_encode(svg_byte_array); + + // getting json byte array + // json - json + svg_base64_encoded + let mut json = get_json(token_id, mint_timestamp); + let mut json_byte_array: ByteArray = convert_into_byteArray(ref json); + json_byte_array.append(@svg_encoded); + + // getting attributes + let mut attribute = get_attributes(token_id, mint_timestamp); + let mut attribute_byte_array: ByteArray = convert_into_byteArray(ref attribute); + + // tokenuri_to_encode = json + attribute + let mut tokenuri_to_encode: ByteArray = Default::default(); + // concat json , + tokenuri_to_encode.append(@json_byte_array); + // concat attribute + tokenuri_to_encode.append(@attribute_byte_array); + // ecoding the encode + let encoded_token_uri = get_base64_encode(tokenuri_to_encode); + + // baseuri + base64_encoded(json,attribute) + let mut token_uri: ByteArray = baseuri.try_into().unwrap(); + // concat the base uri and the encoded token uri + token_uri.append(@encoded_token_uri); + token_uri } } From c7388a513e0e0f3d66076c35fe603e11fac42e26 Mon Sep 17 00:00:00 2001 From: PavitraAgarwal21 Date: Fri, 9 Aug 2024 11:15:24 +0530 Subject: [PATCH 6/8] adding space & parameter renamed --- src/base/token_uris/profile_token_uri.cairo | 28 ++++++++++----------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/base/token_uris/profile_token_uri.cairo b/src/base/token_uris/profile_token_uri.cairo index 7b43083..e469882 100644 --- a/src/base/token_uris/profile_token_uri.cairo +++ b/src/base/token_uris/profile_token_uri.cairo @@ -15,23 +15,24 @@ pub mod ProfileTokenUri { svg.append('"80" fill="red"/>'); svg } - fn get_attributes(tokenid: u256, mint_timestamp: u64) -> Array { - let tokenid_felt: felt252 = tokenid.try_into().unwrap(); + + fn get_attributes(token_id: u256, mint_timestamp: u64) -> Array { + let token_id_felt: felt252 = token_id.try_into().unwrap(); let timestamp_felt: felt252 = mint_timestamp.try_into().unwrap(); - let tokenid_byte: ByteArray = tokenid_felt.try_into().unwrap(); - let tokenid_byte_len: felt252 = tokenid_byte.len().try_into().unwrap(); + let token_id_byte: ByteArray = token_id_felt.try_into().unwrap(); + let token_id_byte_len: felt252 = token_id_byte.len().try_into().unwrap(); let mut attributes = ArrayTrait::::new(); let sample_traits = 'pavitra'; attributes.append('","attributes":[{"display'); attributes.append('_type":"number","trait_'); attributes.append('type":"ID","value":"'); - attributes.append(tokenid_felt); + attributes.append(token_id_felt); attributes.append('"},{"trait_type":"HEX '); attributes.append('ID","value":"'); - attributes.append(tokenid_felt); // TODO to hex string + attributes.append(token_id_felt); // TODO to hex string attributes.append('"},{"trait_type":"DIGITS"'); attributes.append(',"value":"'); - attributes.append(tokenid_byte_len); + attributes.append(token_id_byte_len); attributes.append('"},{"display_type":"date","trai'); attributes.append('t_type":"MINTED AT","value":"'); attributes.append(timestamp_felt); @@ -40,18 +41,20 @@ pub mod ProfileTokenUri { attributes.append(']}'); attributes } - fn get_json(tokenid: u256, mint_timestamp: u64) -> Array { - let tokenid_felt: felt252 = tokenid.try_into().unwrap(); + + fn get_json(token_id: u256, mint_timestamp: u64) -> Array { + let token_id_felt: felt252 = token_id.try_into().unwrap(); let timestamp_felt: felt252 = mint_timestamp.try_into().unwrap(); let mut json = ArrayTrait::::new(); json.append('{"name":"Profile #'); - json.append(tokenid_felt); + json.append(token_id_felt); json.append('","description":"Profile #'); json.append(timestamp_felt); json.append('","image":"data:image/svg'); json.append('+xml;base64,'); json } + fn convert_into_byteArray(ref svg: Array) -> ByteArray { let mut res: ByteArray = Default::default(); // converting felt252 array to byte array @@ -74,7 +77,6 @@ pub mod ProfileTokenUri { }; // encoding the array of u8 to base64url let mut encoded_val = Base64UrlEncoder::encode(res_arr_u8); - // converting array of u8 to byte array let mut res_final: ByteArray = Default::default(); let mut j = 0; @@ -92,17 +94,14 @@ pub mod ProfileTokenUri { let mut svg = get_svg(token_id, mint_timestamp); let mut svg_byte_array: ByteArray = convert_into_byteArray(ref svg); let svg_encoded: ByteArray = get_base64_encode(svg_byte_array); - // getting json byte array // json - json + svg_base64_encoded let mut json = get_json(token_id, mint_timestamp); let mut json_byte_array: ByteArray = convert_into_byteArray(ref json); json_byte_array.append(@svg_encoded); - // getting attributes let mut attribute = get_attributes(token_id, mint_timestamp); let mut attribute_byte_array: ByteArray = convert_into_byteArray(ref attribute); - // tokenuri_to_encode = json + attribute let mut tokenuri_to_encode: ByteArray = Default::default(); // concat json , @@ -111,7 +110,6 @@ pub mod ProfileTokenUri { tokenuri_to_encode.append(@attribute_byte_array); // ecoding the encode let encoded_token_uri = get_base64_encode(tokenuri_to_encode); - // baseuri + base64_encoded(json,attribute) let mut token_uri: ByteArray = baseuri.try_into().unwrap(); // concat the base uri and the encoded token uri From 2c0a8a641cdeaacc78cbec3f7fc45b19cf42e5f3 Mon Sep 17 00:00:00 2001 From: PavitraAgarwal21 Date: Fri, 9 Aug 2024 18:19:08 +0530 Subject: [PATCH 7/8] adding test --- tests/test_profile_token_uri.cairo | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 tests/test_profile_token_uri.cairo diff --git a/tests/test_profile_token_uri.cairo b/tests/test_profile_token_uri.cairo new file mode 100644 index 0000000..be7350d --- /dev/null +++ b/tests/test_profile_token_uri.cairo @@ -0,0 +1,15 @@ + +use karst::base::token_uris::profile_token_uri::ProfileTokenUri::get_token_uri; + + #[test] + fn test_profile_token_uri() { + let token_uri_1_3 : ByteArray = get_token_uri(1, 3); + let token_uri_10_99 : ByteArray = get_token_uri(10, 99); + let token_uri_100_990 : ByteArray = get_token_uri(100, 990); + let check_token_uri_1_3 : ByteArray = "data:image/svg+xml;base64,eyJuYW1lIjoiUHJvZmlsZSAjASIsImRlc2NyaXB0aW9uIjoiUHJvZmlsZSAjAyIsImltYWdlIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTWpBd0lpQm9aV2xuYUhROUlqSXdNQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajQ4WTJseVkyeGxJR040UFNJeE1EQWlJR041UFNJeE1EQWlJSEk5SWpnd0lpQm1hV3hzUFNKeVpXUWlMejQ4TDNOMlp6ND0iLCJhdHRyaWJ1dGVzIjpbeyJkaXNwbGF5X3R5cGUiOiJudW1iZXIiLCJ0cmFpdF90eXBlIjoiSUQiLCJ2YWx1ZSI6IgEifSx7InRyYWl0X3R5cGUiOiJIRVggSUQiLCJ2YWx1ZSI6IgEifSx7InRyYWl0X3R5cGUiOiJESUdJVFMiLCJ2YWx1ZSI6IgEifSx7ImRpc3BsYXlfdHlwZSI6ImRhdGUiLCJ0cmFpdF90eXBlIjoiTUlOVEVEIEFUIiwidmFsdWUiOiIDIn0scGF2aXRyYV19" ; + let check_token_uri_10_99 : ByteArray ="data:image/svg+xml;base64,eyJuYW1lIjoiUHJvZmlsZSAjCiIsImRlc2NyaXB0aW9uIjoiUHJvZmlsZSAjYyIsImltYWdlIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTWpBd0lpQm9aV2xuYUhROUlqSXdNQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajQ4WTJseVkyeGxJR040UFNJeE1EQWlJR041UFNJeE1EQWlJSEk5SWpnd0lpQm1hV3hzUFNKeVpXUWlMejQ4TDNOMlp6ND0iLCJhdHRyaWJ1dGVzIjpbeyJkaXNwbGF5X3R5cGUiOiJudW1iZXIiLCJ0cmFpdF90eXBlIjoiSUQiLCJ2YWx1ZSI6IgoifSx7InRyYWl0X3R5cGUiOiJIRVggSUQiLCJ2YWx1ZSI6IgoifSx7InRyYWl0X3R5cGUiOiJESUdJVFMiLCJ2YWx1ZSI6IgEifSx7ImRpc3BsYXlfdHlwZSI6ImRhdGUiLCJ0cmFpdF90eXBlIjoiTUlOVEVEIEFUIiwidmFsdWUiOiJjIn0scGF2aXRyYV19"; + let check_token_uri_100_990 : ByteArray = "data:image/svg+xml;base64,eyJuYW1lIjoiUHJvZmlsZSAjZCIsImRlc2NyaXB0aW9uIjoiUHJvZmlsZSAjA94iLCJpbWFnZSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjNhV1IwYUQwaU1qQXdJaUJvWldsbmFIUTlJakl3TUNJZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWo0OFkybHlZMnhsSUdONFBTSXhNREFpSUdONVBTSXhNREFpSUhJOUlqZ3dJaUJtYVd4c1BTSnlaV1FpTHo0OEwzTjJaejQ9IiwiYXR0cmlidXRlcyI6W3siZGlzcGxheV90eXBlIjoibnVtYmVyIiwidHJhaXRfdHlwZSI6IklEIiwidmFsdWUiOiJkIn0seyJ0cmFpdF90eXBlIjoiSEVYIElEIiwidmFsdWUiOiJkIn0seyJ0cmFpdF90eXBlIjoiRElHSVRTIiwidmFsdWUiOiIBIn0seyJkaXNwbGF5X3R5cGUiOiJkYXRlIiwidHJhaXRfdHlwZSI6Ik1JTlRFRCBBVCIsInZhbHVlIjoiA94ifSxwYXZpdHJhXX0="; + assert_eq!(token_uri_1_3, check_token_uri_1_3); + assert_eq!(token_uri_10_99, check_token_uri_10_99); + assert_eq!(token_uri_100_990, check_token_uri_100_990); + } \ No newline at end of file From ac9d607a979ad08a6c46903112d5329cc78f24d7 Mon Sep 17 00:00:00 2001 From: PavitraAgarwal21 Date: Sat, 10 Aug 2024 17:09:29 +0530 Subject: [PATCH 8/8] formating --- tests/test_profile_token_uri.cairo | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/tests/test_profile_token_uri.cairo b/tests/test_profile_token_uri.cairo index be7350d..3d2c509 100644 --- a/tests/test_profile_token_uri.cairo +++ b/tests/test_profile_token_uri.cairo @@ -1,15 +1,17 @@ +use karst::base::token_uris::profile_token_uri::ProfileTokenUri::get_token_uri; -use karst::base::token_uris::profile_token_uri::ProfileTokenUri::get_token_uri; - - #[test] - fn test_profile_token_uri() { - let token_uri_1_3 : ByteArray = get_token_uri(1, 3); - let token_uri_10_99 : ByteArray = get_token_uri(10, 99); - let token_uri_100_990 : ByteArray = get_token_uri(100, 990); - let check_token_uri_1_3 : ByteArray = "data:image/svg+xml;base64,eyJuYW1lIjoiUHJvZmlsZSAjASIsImRlc2NyaXB0aW9uIjoiUHJvZmlsZSAjAyIsImltYWdlIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTWpBd0lpQm9aV2xuYUhROUlqSXdNQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajQ4WTJseVkyeGxJR040UFNJeE1EQWlJR041UFNJeE1EQWlJSEk5SWpnd0lpQm1hV3hzUFNKeVpXUWlMejQ4TDNOMlp6ND0iLCJhdHRyaWJ1dGVzIjpbeyJkaXNwbGF5X3R5cGUiOiJudW1iZXIiLCJ0cmFpdF90eXBlIjoiSUQiLCJ2YWx1ZSI6IgEifSx7InRyYWl0X3R5cGUiOiJIRVggSUQiLCJ2YWx1ZSI6IgEifSx7InRyYWl0X3R5cGUiOiJESUdJVFMiLCJ2YWx1ZSI6IgEifSx7ImRpc3BsYXlfdHlwZSI6ImRhdGUiLCJ0cmFpdF90eXBlIjoiTUlOVEVEIEFUIiwidmFsdWUiOiIDIn0scGF2aXRyYV19" ; - let check_token_uri_10_99 : ByteArray ="data:image/svg+xml;base64,eyJuYW1lIjoiUHJvZmlsZSAjCiIsImRlc2NyaXB0aW9uIjoiUHJvZmlsZSAjYyIsImltYWdlIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTWpBd0lpQm9aV2xuYUhROUlqSXdNQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajQ4WTJseVkyeGxJR040UFNJeE1EQWlJR041UFNJeE1EQWlJSEk5SWpnd0lpQm1hV3hzUFNKeVpXUWlMejQ4TDNOMlp6ND0iLCJhdHRyaWJ1dGVzIjpbeyJkaXNwbGF5X3R5cGUiOiJudW1iZXIiLCJ0cmFpdF90eXBlIjoiSUQiLCJ2YWx1ZSI6IgoifSx7InRyYWl0X3R5cGUiOiJIRVggSUQiLCJ2YWx1ZSI6IgoifSx7InRyYWl0X3R5cGUiOiJESUdJVFMiLCJ2YWx1ZSI6IgEifSx7ImRpc3BsYXlfdHlwZSI6ImRhdGUiLCJ0cmFpdF90eXBlIjoiTUlOVEVEIEFUIiwidmFsdWUiOiJjIn0scGF2aXRyYV19"; - let check_token_uri_100_990 : ByteArray = "data:image/svg+xml;base64,eyJuYW1lIjoiUHJvZmlsZSAjZCIsImRlc2NyaXB0aW9uIjoiUHJvZmlsZSAjA94iLCJpbWFnZSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjNhV1IwYUQwaU1qQXdJaUJvWldsbmFIUTlJakl3TUNJZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWo0OFkybHlZMnhsSUdONFBTSXhNREFpSUdONVBTSXhNREFpSUhJOUlqZ3dJaUJtYVd4c1BTSnlaV1FpTHo0OEwzTjJaejQ9IiwiYXR0cmlidXRlcyI6W3siZGlzcGxheV90eXBlIjoibnVtYmVyIiwidHJhaXRfdHlwZSI6IklEIiwidmFsdWUiOiJkIn0seyJ0cmFpdF90eXBlIjoiSEVYIElEIiwidmFsdWUiOiJkIn0seyJ0cmFpdF90eXBlIjoiRElHSVRTIiwidmFsdWUiOiIBIn0seyJkaXNwbGF5X3R5cGUiOiJkYXRlIiwidHJhaXRfdHlwZSI6Ik1JTlRFRCBBVCIsInZhbHVlIjoiA94ifSxwYXZpdHJhXX0="; - assert_eq!(token_uri_1_3, check_token_uri_1_3); - assert_eq!(token_uri_10_99, check_token_uri_10_99); - assert_eq!(token_uri_100_990, check_token_uri_100_990); - } \ No newline at end of file +#[test] +fn test_profile_token_uri() { + let token_uri_1_3: ByteArray = get_token_uri(1, 3); + let token_uri_10_99: ByteArray = get_token_uri(10, 99); + let token_uri_100_990: ByteArray = get_token_uri(100, 990); + let check_token_uri_1_3: ByteArray = + "data:image/svg+xml;base64,eyJuYW1lIjoiUHJvZmlsZSAjASIsImRlc2NyaXB0aW9uIjoiUHJvZmlsZSAjAyIsImltYWdlIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTWpBd0lpQm9aV2xuYUhROUlqSXdNQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajQ4WTJseVkyeGxJR040UFNJeE1EQWlJR041UFNJeE1EQWlJSEk5SWpnd0lpQm1hV3hzUFNKeVpXUWlMejQ4TDNOMlp6ND0iLCJhdHRyaWJ1dGVzIjpbeyJkaXNwbGF5X3R5cGUiOiJudW1iZXIiLCJ0cmFpdF90eXBlIjoiSUQiLCJ2YWx1ZSI6IgEifSx7InRyYWl0X3R5cGUiOiJIRVggSUQiLCJ2YWx1ZSI6IgEifSx7InRyYWl0X3R5cGUiOiJESUdJVFMiLCJ2YWx1ZSI6IgEifSx7ImRpc3BsYXlfdHlwZSI6ImRhdGUiLCJ0cmFpdF90eXBlIjoiTUlOVEVEIEFUIiwidmFsdWUiOiIDIn0scGF2aXRyYV19"; + let check_token_uri_10_99: ByteArray = + "data:image/svg+xml;base64,eyJuYW1lIjoiUHJvZmlsZSAjCiIsImRlc2NyaXB0aW9uIjoiUHJvZmlsZSAjYyIsImltYWdlIjoiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTWpBd0lpQm9aV2xuYUhROUlqSXdNQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajQ4WTJseVkyeGxJR040UFNJeE1EQWlJR041UFNJeE1EQWlJSEk5SWpnd0lpQm1hV3hzUFNKeVpXUWlMejQ4TDNOMlp6ND0iLCJhdHRyaWJ1dGVzIjpbeyJkaXNwbGF5X3R5cGUiOiJudW1iZXIiLCJ0cmFpdF90eXBlIjoiSUQiLCJ2YWx1ZSI6IgoifSx7InRyYWl0X3R5cGUiOiJIRVggSUQiLCJ2YWx1ZSI6IgoifSx7InRyYWl0X3R5cGUiOiJESUdJVFMiLCJ2YWx1ZSI6IgEifSx7ImRpc3BsYXlfdHlwZSI6ImRhdGUiLCJ0cmFpdF90eXBlIjoiTUlOVEVEIEFUIiwidmFsdWUiOiJjIn0scGF2aXRyYV19"; + let check_token_uri_100_990: ByteArray = + "data:image/svg+xml;base64,eyJuYW1lIjoiUHJvZmlsZSAjZCIsImRlc2NyaXB0aW9uIjoiUHJvZmlsZSAjA94iLCJpbWFnZSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjNhV1IwYUQwaU1qQXdJaUJvWldsbmFIUTlJakl3TUNJZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWo0OFkybHlZMnhsSUdONFBTSXhNREFpSUdONVBTSXhNREFpSUhJOUlqZ3dJaUJtYVd4c1BTSnlaV1FpTHo0OEwzTjJaejQ9IiwiYXR0cmlidXRlcyI6W3siZGlzcGxheV90eXBlIjoibnVtYmVyIiwidHJhaXRfdHlwZSI6IklEIiwidmFsdWUiOiJkIn0seyJ0cmFpdF90eXBlIjoiSEVYIElEIiwidmFsdWUiOiJkIn0seyJ0cmFpdF90eXBlIjoiRElHSVRTIiwidmFsdWUiOiIBIn0seyJkaXNwbGF5X3R5cGUiOiJkYXRlIiwidHJhaXRfdHlwZSI6Ik1JTlRFRCBBVCIsInZhbHVlIjoiA94ifSxwYXZpdHJhXX0="; + assert_eq!(token_uri_1_3, check_token_uri_1_3); + assert_eq!(token_uri_10_99, check_token_uri_10_99); + assert_eq!(token_uri_100_990, check_token_uri_100_990); +}