// Laboratório 2 — Escrever com token // Execute: npx tsx praticar/02-escrever.ts (com a API da aula 10 no ar) import axios from 'axios'; import { ADMINISTRADOR, API_URL, LEITORA, NOVO_LIVRO, type Livro, type Pagina } from '../src/api.js'; // TODO 1: implemente o login com fetch: POST /auth/login com JSON, devolvendo // o accessToken. Não esqueça o cabeçalho que declara o formato. async function login(conta: { email: string; senha: string }): Promise { void conta; throw new Error('TODO: login'); } // TODO 2: implemente o cadastro com fetch. Devolva o status da resposta. async function cadastrar(corpo: unknown, token?: string, declararJson = true): Promise { void corpo; void token; void declararJson; throw new Error('TODO: cadastrar'); } const { data } = await axios.get>(`${API_URL}/livros`); const livro = { ...NOVO_LIVRO, autorId: data.dados[0].autor.id }; const admin = await login(ADMINISTRADOR); const leitora = await login(LEITORA); // TODO 3: ANTES de rodar, escreva o status que espera em cada linha e por quê. // Um deles depende da ordem em que a API aplica guard e validação. console.log('sem declarar JSON, com token de admin :', await cadastrar(livro, admin, false)); console.log('sem token :', await cadastrar(livro)); console.log('token de LEITOR :', await cadastrar(livro, leitora)); console.log('sem token e sem declarar JSON :', await cadastrar(livro, undefined, false)); console.log('token de ADMINISTRADOR :', await cadastrar(livro, admin)); console.log('de novo, mesmo ISBN :', await cadastrar(livro, admin)); // TODO 4: remova o livro criado com axios (DELETE /livros/:id, token de admin) // e imprima o status e o `data` da resposta. Depois faça o mesmo com // fetch e explique por que `await resposta.json()` lança erro aqui.