lido-nation/cardano-nft-maker-laravel

Cardano 上的 Nft Maker

1.0.5 2024-08-17 09:06 UTC

This package is not auto-updated.

Last update: 2024-09-15 07:46:08 UTC


README

Latest Version on Packagist Total Downloads

本软件包旨在使 Cardano Nft 创建变得简单,我们在幕后使用 NMKR Studio 来使这个过程无缝。

支持我们

您可以通过 购买我们的 Nft 或捐赠 来支持我们。

安装

您可以通过 composer 安装此软件包。

composer require lidonation/cardano-nft-maker-laravel

您可以使用以下命令发布配置文件:

php artisan vendor:publish --tag="cardano-nft-maker-laravel-config"

这是发布配置文件的内容

return [
    'auth_key' => env('MAKER_AUTH_KEY', ''),
    'baseUrl' => env('MAKER_BASE_URL', 'https://studio-api.preprod.nmkr.io'),
    'project_uuid' => env('MAKER_PROJECT_UUID',)
];

使用方法

NMKR Studio 上设置一个项目

要使用此软件包,您的专用 nft 模型需要实现 CardanoNftInterface 接口,该接口具有预定义属性 maker_nft_uuid,它将是将在 API 中创建的远程 nft 的 uuid,以及 maker_project_uuid,它是您的远程 nft 所在的项目 uuid。为了简化,我们将这些属性作为 nft 模型中的列。使用 NftServiceTrait,它允许您使用 NftMakerService 进行 API 调用。

<?php

namespace App\Models;

use Lidonation\CardanoNftMaker\Interfaces\CardanoNftInterface;
use Lidonation\CardanoNftMaker\Traits\NftServiceTrait;

class Nft extends Model implements CardanoNftInterface
{
    use NftServiceTrait;
}

让我们将我们的 nft 上传到 API

//get our nft instance 
$myNft = Nft::first();

$metadata = [
    "tokenname" => $myNft->name,
    "displayname" => $myNft->name,
    "description" => $myNft->description,
    "previewImageNft" => [
        "mimetype" => "image/png",
        "fileFromsUrl" => "https://images.pexels.com/photos/45201/kitty-cat-kitten-pet-45201.jpeg?auto=compress&cs=tinysrgb&w=800",
    ],
    "metadataPlaceholder" => [
        [
            "name" => "Age",
            "value" => "1"
        ],
        [
            "name" => "Color",
            "value" => "Black and white"
        ]
    ],
];

//our metadata has to conform to the format specified by the api, our DTO can do the validation for us 
$validatedMetadata = MetadataUpload::from($metadata);

//set the remote project uuid
$myNft->update([
  'maker_project_uuid' => '92fa1da3-df83-40b9-a21b-dc819553e98b'
]);

//upload
/* @var $response \Saloon\Http\Response  */
$response = $mynft->uploadNft($validatedMetadata);

//response details 
$remoteNftDetails = $response->json();

//save the nftUid for further updating if required, we will also save our metadata for updating later 
$metadataDetails = $remoteNftDetails['metadata'];
$myNft->update([
  'maker_nft_uuid' => $remoteNftDetails['nftUid'],
  'maker_nft_metadata' => $metadataDetails,
  'policy' => array_key_first(json_decode($metadataDetails, true)[721])
]);

如果我们需要更新我们的元数据,我们可以轻松地做到这一点。对于我们的案例,我们将添加社交联系方式。

$metadataDetails = json_decode($myNft->maker_nft_metadata, true);
$metadata = $metadataDetails[721][$myNft->policy][$myNft->name];

//remove empty fields if any
$updatedMetadata = array_filter($metadata, fn ($value) => !empty($value));

// add custom static metadata
$updatedMetadata['web contact'] = [
    'twitter' => 'https://x.com/catAstrophy',
    'discord' => 'https://discordapp.com/users/7734909132320',
    'website' => 'https://www.cat-astrophy.com',
];
$metadataDetails[721][$myNft->policy][$myNft->name] = $updatedMetadata;

//lets update remote our nft
$response = $myNft->updateNft($metadataDetails)->json();

//sync local with remote nft
$myNft->update([
  'maker_nft_metadata' => $response['metadata'],
]);

要删除我们的远程 nft

$myNft->deleteNft();

变更日志

请参阅 CHANGELOG 以获取有关最近更改的更多信息。

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件