Pular para o conteúdo principal

ProfileImageService

Visão Geral

O ProfileImageService provê operações para buscar, enviar e remover a imagem de perfil de um usuário.

Localização: services/profile-image/profile-image.service.ts

Endpoints

MétodoEndpointDescrição
GET/usuario/:userId/imagemPerfilBusca a imagem de perfil (blob)
POST/usuario/:userId/imagemPerfilFaz upload da imagem de perfil
DELETE/usuario/:userId/imagemPerfilRemove a imagem de perfil

Métodos

fetchProfileImageRemote(userId)

Retorna o Blob da imagem de perfil do usuário.

Parâmetros

NomeTipoObrigatório
userIdstringSim

Retorno: Promise<Blob>

Exemplo

const blob = await profileImageService.fetchProfileImageRemote("userId");
// usar URL.createObjectURL(blob) para exibir

Erros

StatusDescrição
4xx/5xxLança Error: ProfileImageService.fetchProfileImageRemote failed: {status}

uploadProfileImage(userId, image)

Faz upload de uma File usando buildFormData.

Parâmetros

NomeTipoObrigatório
userIdstringSim
imageFileSim

Retorno: Promise<ProfileImageResponse>

Exemplo

const resp = await profileImageService.uploadProfileImage("userId", file);
console.log(resp.imageUrl);

Erros

StatusDescrição
4xx/5xxLança Error: ProfileImageService.uploadProfileImage failed: {status}

deleteProfileImage(userId)

Remove a imagem de perfil; espera 204 na API.

Parâmetros: userId: string

Retorno: Promise<void>

Erros: lança Error: ProfileImageService.deleteProfileImage failed: {status} em não-2xx.

Estruturas de Dados

ProfileImageResponse

export interface ProfileImageResponse {
message: string;
imageUrl: string;
userId: string;
}

Componentes Relacionados

ComponenteDescrição
buildFormDataHelper para construir FormData a partir do File
apiWithoutAccessTokenInstância Axios usada nas requisições públicas

Casos de Uso

  • Exibir imagem de perfil do usuário (download como blob)
  • Atualizar imagem de perfil via upload
  • Remover imagem de perfil

Testes

Localização: services/profile-image/profile-image.service.test.ts

Principais cenários

CenárioResultado esperado
fetchProfileImageRemote status 200Retorna Blob
fetchProfileImageRemote status 400Lança ProfileImageService.fetchProfileImageRemote failed
uploadProfileImage status 200Retorna ProfileImageResponse
uploadProfileImage status 400Lança ProfileImageService.uploadProfileImage failed
deleteProfileImage status 204Resolve void
deleteProfileImage status 400Lança ProfileImageService.deleteProfileImage failed

Mocks

Os testes do serviço usam stubs da instância apiWithoutAccessToken (métodos get, post, delete) que retornam objetos com status e data.

Instância

Localização: services/profile-image/profile-image.service.instance.ts

import { profileImageService } from "@/services/profile-image/profile-image.service.instance";