@@ -3,18 +3,18 @@ expressServer.js
33Upload a SVG file to Pinata, get a hash,
44Update metaData, upload metaData to Pinata
55*/
6- const express = require ( ' express' ) ;
7- const axios = require ( ' axios' ) ;
8- const cors = require ( ' cors' ) ;
9- const FormData = require ( ' form-data' ) ;
10- require ( ' dotenv' ) . config ( ) ;
6+ const express = require ( " express" ) ;
7+ const axios = require ( " axios" ) ;
8+ const cors = require ( " cors" ) ;
9+ const FormData = require ( " form-data" ) ;
10+ require ( " dotenv" ) . config ( ) ;
1111
12- const PINATA_API_KEY = process . env . PINATA_API_KEY || '' ;
13- const PINATA_SECRET_API_KEY = process . env . PINATA_SECRET_API_KEY || '' ;
12+ const PINATA_API_KEY = process . env . PINATA_API_KEY || "" ;
13+ const PINATA_SECRET_API_KEY = process . env . PINATA_SECRET_API_KEY || "" ;
1414
1515const app = express ( ) ;
1616app . use ( cors ( ) ) ;
17- app . use ( express . json ( { limit : ' 50mb' } ) ) ;
17+ app . use ( express . json ( { limit : " 50mb" } ) ) ;
1818const port = 5000 ;
1919
2020const metadata = {
@@ -32,58 +32,75 @@ const metadata = {
3232 } ,
3333 ] ,
3434} ;
35- app . get ( ' /server_status' , ( req , res ) => {
35+ app . get ( " /server_status" , ( req , res ) => {
3636 const uptime = process . uptime ( ) ; // Server uptime in seconds
3737 const status = {
38- message : 'Server is running' ,
39- uptime : `${ Math . floor ( uptime / 60 ) } minutes ${ Math . floor ( uptime % 60 ) } seconds`
38+ message : "Server is running" ,
39+ uptime : `${ Math . floor ( uptime / 60 ) } minutes ${ Math . floor (
40+ uptime % 60
41+ ) } seconds`,
4042 } ;
41- console . log ( ' Server status check' ) ;
43+ console . log ( " Server status check" ) ;
4244 res . json ( status ) ;
4345} ) ;
44- app . post ( ' /server' , async ( req , res ) => {
46+ app . post ( " /server" , async ( req , res ) => {
4547 try {
46- // const { name, svgString, description, artistName } = req.body;
47- // metadata.name = name;
48- // metadata.description = description;
49- // metadata.attributes[1].value = artistName;
48+ const { name, svgString, description, artistName } = req . body ;
49+ metadata . name = name ;
50+ metadata . description = description ;
51+ metadata . attributes [ 1 ] . value = artistName ;
5052
51- // // SVG file, upload to Pinata, get a hash
52- // const formDataSVG = new FormData();
53- // formDataSVG.append('file', Buffer.from(svgString), 'image.svg');
54- // formDataSVG.append('pinataMetadata', JSON.stringify({ name: `Aaarto: ${name}` }));
55- // formDataSVG.append('pinataOptions', JSON.stringify({ cidVersion: 1 }));
56- // const response = await axios.post('https://api.pinata.cloud/pinning/pinFileToIPFS', formDataSVG, {
57- // headers: {
58- // ...formDataSVG.getHeaders(),
59- // pinata_api_key: PINATA_API_KEY,
60- // pinata_secret_api_key: PINATA_SECRET_API_KEY,
61- // },
62- // });
63- // const ipfsHash = response.data.IpfsHash;
53+ // SVG file, upload to Pinata, get a hash
54+ const formDataSVG = new FormData ( ) ;
55+ formDataSVG . append ( "file" , Buffer . from ( svgString ) , "image.svg" ) ;
56+ formDataSVG . append (
57+ "pinataMetadata" ,
58+ JSON . stringify ( { name : `Aaarto: ${ name } ` } )
59+ ) ;
60+ formDataSVG . append ( "pinataOptions" , JSON . stringify ( { cidVersion : 1 } ) ) ;
61+ const response = await axios . post (
62+ "https://api.pinata.cloud/pinning/pinFileToIPFS" ,
63+ formDataSVG ,
64+ {
65+ headers : {
66+ ...formDataSVG . getHeaders ( ) ,
67+ pinata_api_key : PINATA_API_KEY ,
68+ pinata_secret_api_key : PINATA_SECRET_API_KEY ,
69+ } ,
70+ }
71+ ) ;
72+ const ipfsHash = response . data . IpfsHash ;
6473
65- // // Update metadata image field with the retrieved IPFS hash
66- // metadata.image = `ipfs://${ipfsHash}`;
74+ // Update metadata image field with the retrieved IPFS hash
75+ metadata . image = `ipfs://${ ipfsHash } ` ;
6776
68- // // MetaData MD, upload to Pintata
69- // const formDataMD = new FormData();
70- // const jsonBuffer = Buffer.from(JSON.stringify(metadata));
71- // formDataMD.append("file", jsonBuffer, "data.json");
72- // formDataMD.append('pinataMetadata', JSON.stringify({ name: `Aaarto: ${name} metaData` }));
73- // formDataMD.append('pinataOptions', JSON.stringify({ cidVersion: 1 }));
74- // const responseMD = await axios.post('https://api.pinata.cloud/pinning/pinFileToIPFS', formDataMD, {
75- // headers: {
76- // ...formDataMD.getHeaders(),
77- // pinata_api_key: PINATA_API_KEY,
78- // pinata_secret_api_key: PINATA_SECRET_API_KEY,
79- // },
80- // });
81- // const ipfsHashMD = responseMD.data.IpfsHash;
77+ // MetaData MD, upload to Pintata
78+ const formDataMD = new FormData ( ) ;
79+ const jsonBuffer = Buffer . from ( JSON . stringify ( metadata ) ) ;
80+ formDataMD . append ( "file" , jsonBuffer , "data.json" ) ;
81+ formDataMD . append (
82+ "pinataMetadata" ,
83+ JSON . stringify ( { name : `Aaarto: ${ name } metaData` } )
84+ ) ;
85+ formDataMD . append ( "pinataOptions" , JSON . stringify ( { cidVersion : 1 } ) ) ;
86+ const responseMD = await axios . post (
87+ "https://api.pinata.cloud/pinning/pinFileToIPFS" ,
88+ formDataMD ,
89+ {
90+ headers : {
91+ ...formDataMD . getHeaders ( ) ,
92+ pinata_api_key : PINATA_API_KEY ,
93+ pinata_secret_api_key : PINATA_SECRET_API_KEY ,
94+ } ,
95+ }
96+ ) ;
97+ const ipfsHashMD = responseMD . data . IpfsHash ;
8298
83- return res . status ( 200 ) . json ( { ipfsHashMD : "XXX" } )
99+ return res . status ( 200 ) . json ( { ipfsHashMD } ) ;
84100 } catch ( error ) {
85-
86- return res . status ( 500 ) . json ( { error : `${ error } Failed to upload to Pinata` } ) ;
101+ return res
102+ . status ( 500 )
103+ . json ( { error : `${ error } Failed to upload to Pinata` } ) ;
87104 }
88105} ) ;
89106
0 commit comments