lido-nation / cardano-nft-maker-laravel
Cardano 上的 Nft Maker
1.0.5
2024-08-17 09:06 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- saloonphp/saloon: ^3.0
- spatie/laravel-data: ^4.1
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.35
README
本软件包旨在使 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)。有关更多信息,请参阅 许可证文件。