Simple rust lib for NFT Metadata, and a basic axum server for delivering it
$ cargo build
$ cargo clippy
$ cargo run --bin example
Implement a MetadataGenerator
that asynchronously maps a token ID to token metadata, then call serve
to serve it. See bin/example.rs
as well as the crate::generators::disk::LocalJson
generator
Consuming crates need to depend on the following:
async_trait
url
(for convenience, theUrl
struct is re-exported)ethers
(for convenience theU256
struct is re-rexported)
The axum
feature (on by default) adds a minimal
axum server
preconfigured to serve token metadata.
After instantiating your metadata generator, you can serve it over http as follows:
use nft_server::prelude::*;
async main() {
let my_generator = ...;
let addr = ([0, 0, 0, 0], 8080);
serve_generator(my_generator, addr).await;
}
This server has the following routes:
/healthcheck
- returns 200/
- callsMetadataGenerator::contract_metadata()
and returns the result/:token_id
- as a decimal number. CallsMetadataGenerator::metadata_for(token_id)
and returns the result
e.g. localhost:8080/0
will return json metadata for token 0