Skip to content

Commit 724804c

Browse files
authored
Merge pull request #159 from walt-id/feat/shimmerNFTS
Feat/shimmer nfts
2 parents 24efc9e + 3162c70 commit 724804c

File tree

3 files changed

+91
-0
lines changed

3 files changed

+91
-0
lines changed

src/main/kotlin/id/walt/nftkit/rest/NftController.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ data class ApproveRequest(
6161
object NftController {
6262
val TAG1 ="EVM based Blockchain"
6363
val TAG2 ="General"
64+
val TAG3 ="ShimmerEVM"
6465
fun deploy(ctx: Context) {
6566
val deployReq = ctx.bodyAsClass(DeployRequest::class.java)
6667
val chain = ctx.pathParam("chain")
@@ -465,4 +466,16 @@ object NftController {
465466
}.json<String>("200") { }
466467

467468

469+
fun getShimmerNFTinstances(ctx: Context) {
470+
val contractAddress = ctx.pathParam("contractAddress")
471+
val result= NftService.getShimmerNFTinstances(contractAddress)
472+
ctx.json(result)
473+
}
474+
475+
fun getShimmerNFTinstancesDocs() = document().operation {
476+
it.summary("Get Shimmer NFT instances")
477+
.operationId("Get Shimmer NFT instances").addTagsItem(TAG3)
478+
}.pathParam<String>("contractAddress") {
479+
}.json<List<shimmerNFT>>("200") { }
480+
468481
}

src/main/kotlin/id/walt/nftkit/rest/NftKitApi.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,12 @@ object NftKitApi {
210210
"chain/{chain}/contract/{contractAddress}/token/{tokenId}/getapproved",
211211
documented(NftController.getApprovedDocs(), NftController::getApproved)
212212
)
213+
path("ShimmerEVM"){
214+
post(
215+
"contract/{contractAddress}/token/instances",
216+
documented(NftController.getShimmerNFTinstancesDocs(), NftController::getShimmerNFTinstances)
217+
)
218+
}
213219
path("tezos"){
214220
post(
215221
"chain/{chain}/contract/deploy",

src/main/kotlin/id/walt/nftkit/services/NftService.kt

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,60 @@ data class Token(
200200
val timeStamp: Long
201201
)
202202

203+
@Serializable
204+
data class Trait_shimmer(
205+
val trait_type: String,
206+
val value: String
207+
)
208+
@Serializable
209+
210+
data class Metadata(
211+
val attributes: List<Trait_shimmer>?=null,
212+
val description: String?=null,
213+
val name: String?=null,
214+
)
215+
@Serializable
216+
data class Owner(
217+
val hash: String,
218+
val implementation_name: String?,
219+
val is_contract: Boolean,
220+
val is_verified: Boolean?,
221+
val name: String?,
222+
val private_tags: List<String>?,
223+
val public_tags: List<String>?,
224+
val watchlist_names: List<String>?
225+
)
226+
@Serializable
227+
228+
data class Token_info(
229+
val address: String,
230+
val circulating_market_cap: String?,
231+
val decimals: Int?,
232+
val exchange_rate: String?,
233+
val holders: String,
234+
val icon_url: String?,
235+
val name: String,
236+
val symbol: String,
237+
val total_supply: String?,
238+
val type: String
239+
)
240+
@Serializable
241+
data class Item(
242+
val animation_url: String?,
243+
val external_app_url: String?,
244+
val id: String,
245+
val image_url: String?,
246+
val is_unique: Boolean,
247+
val metadata: Metadata,
248+
val owner: Owner,
249+
val token: Token_info
250+
)
251+
@Serializable
252+
253+
data class shimmerNFT(
254+
val items: List<Item>,
255+
val next_page_params: String?,
256+
)
203257

204258
/*@Serializable
205259
data class NFTsAlchemyResult(
@@ -455,6 +509,24 @@ object NftService {
455509
}
456510
}
457511

512+
513+
fun getShimmerNFTinstances(smartContractAddress: String) : shimmerNFT{
514+
515+
return runBlocking {
516+
val url = "https://explorer.evm.testnet.shimmer.network/api/v2/tokens/${smartContractAddress}/instances"
517+
val nfts = client.get(url)
518+
{
519+
contentType(ContentType.Application.Json)
520+
}.body<shimmerNFT>()
521+
522+
println("nfts: $nfts")
523+
return@runBlocking nfts
524+
}
525+
526+
}
527+
528+
529+
458530
fun getAccountNFTsByAlchemy(chain: Chain, account: String): List<NFTsAlchemyResult.NftTokenByAlchemy> {
459531
return runBlocking {
460532
val url = when (chain) {

0 commit comments

Comments
 (0)