Oferecemos um sdk para facilitar a integração entre o TucanoCloud e sua aplicação NextJS.
Instale os pacotes via npm, yarn ou qualquer gerenciador de pacotes de sua preferência.
$ npm install tucano-cloud-next
O router é um objeto que define os endpoints da sua aplicação, cada endpoint é um objeto com as seguintes propriedades:
@/lib/tcloud/router.ts
1import { type TCRouter } from "tucano-cloud-next"23const auth = async (req: NextRequest) => ({ userId: "123" }); // Example auth function45export const router = {6 "profileImage": {7 allowedTypes: ["image/jpeg", "image/png"],8 middleware: async (req: NextRequest, res: NextResponse) => {9 const { userId } = await auth(req);10 if (!userId) throw new Error("Unauthorized");1112 return { userId }; // This data will be passed to onUploadComplete13 },14 onUploadComplete: (data: any) => {1516 }17 }18} satisfies TCRouter;1920export type MyRouter = typeof router;
Função que cria uma instância do TucanoCloud para ser usada em sua aplicação NextJs.
@/lib/tcloud/core.ts
1import TucanoCloud from "tucano-cloud-next";2import { MyRouter } from "@/lib/tcloud/router";34const tucanoCloud = new TucanoCloud({5 project_id: process.env.TUCANO_CLOUD_PROJECT_ID,6 secret_key: process.env.TUCANO_CLOUD_SECRET7});89tucanoCloud.setRouter(router);1011export default tucanoCloud;
O endpoint é necessário para que o TucanoCloud possa se comunicar com sua aplicação NextJS.
@/app/api/tcloud/route.ts
1import { NextRequest, NextResponse } from "next/server";2import tucanoCloud from "@/lib/tcloud/core";34const routeHandler = tucanoCloud.createRouterHandler();56export const GET = routeHandler;7export const POST = routeHandler;
O botão de upload é um componente que facilita o upload de arquivos para o TucanoCloud. Ele é configurado com o endpoint que você criou anteriormente.
@/lib/tcloud/upload-componets.tsx
1import { generateUploadButton, generateUploadDropzone } from "tucano-cloud-next"2import { MyRouter } from "@/lib/tcloud/router";34const UploadButton = generateUploadButton<MyRouter>();5const UploadDropzone = generateUploadDropzone<MyRouter>();67export { UploadButton, UploadDropzone }
Agora você pode usar o componente UploadButton em sua aplicação NextJS da seguinte forma:
@/app/page.tsx
1import { UploadButton } from "@/lib/tcloud/upload-components";2import router from "@/lib/tcloud/router";34export default function MyPage() {5 return (6 <div>7 <UploadButton8 route="profileImage"9 router={router}10 className='bg-blue-600 rounded-md p-3 font-medium' // Here you can style the button with your own classes11 onUploadComplete={data => {12 console.log('Completed:', data)13 }}14 onUploadError={error => {15 console.log('Error:', error)16 }}17 >18 Upload19 </UploadButton>20 </div>21 );22}
Obrigado por usar o TucanoCloud! Se você tiver alguma dúvida, entre em contato conosco.