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étodo | Endpoint | Descrição |
|---|---|---|
| GET | /usuario/:userId/imagemPerfil | Busca a imagem de perfil (blob) |
| POST | /usuario/:userId/imagemPerfil | Faz upload da imagem de perfil |
| DELETE | /usuario/:userId/imagemPerfil | Remove a imagem de perfil |
Métodos
fetchProfileImageRemote(userId)
Retorna o Blob da imagem de perfil do usuário.
Parâmetros
| Nome | Tipo | Obrigatório |
|---|---|---|
userId | string | Sim |
Retorno: Promise<Blob>
Exemplo
const blob = await profileImageService.fetchProfileImageRemote("userId");
// usar URL.createObjectURL(blob) para exibir
Erros
| Status | Descrição |
|---|---|
| 4xx/5xx | Lança Error: ProfileImageService.fetchProfileImageRemote failed: {status} |
uploadProfileImage(userId, image)
Faz upload de uma File usando buildFormData.
Parâmetros
| Nome | Tipo | Obrigatório |
|---|---|---|
userId | string | Sim |
image | File | Sim |
Retorno: Promise<ProfileImageResponse>
Exemplo
const resp = await profileImageService.uploadProfileImage("userId", file);
console.log(resp.imageUrl);
Erros
| Status | Descrição |
|---|---|
| 4xx/5xx | Lanç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
| Componente | Descrição |
|---|---|
buildFormData | Helper para construir FormData a partir do File |
apiWithoutAccessToken | Instâ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ário | Resultado esperado |
|---|---|
fetchProfileImageRemote status 200 | Retorna Blob |
fetchProfileImageRemote status 400 | Lança ProfileImageService.fetchProfileImageRemote failed |
uploadProfileImage status 200 | Retorna ProfileImageResponse |
uploadProfileImage status 400 | Lança ProfileImageService.uploadProfileImage failed |
deleteProfileImage status 204 | Resolve void |
deleteProfileImage status 400 | Lanç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";