Skip to content

marcos-vinicius-mafei/G4-Hub-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

G4Hub

G4mes HUB - API

Aqui os usuários podem curtir os seus jogos preferidos e as plataformas que mais utilizam, dessa forma, outros usuários também poderam ver o seu perfil e interesses, assim podendo compartilhar informações e afeições em comum.

Tecnologias

Para a construção da nossa API foram utilizadas as seguintes tecnologias: Express.js, Node.js, MongoDB e Heroku cloud.

Endpoints

A API possui 11 endpoints para visualização de usuário, jogos, plataformas, likes e comentários. Além disso, existem os endpoints que podem ser utilizados para cadastro e login de usuários.

O URL base da API é https://g4-hub-api.herokuapp.com/

Endpoints de usuário

Criação de usuário

POST /users/register - FORMATO DA REQUISIÇÃO

{
  "username": "demo",
  "email": "demo@gmail.com",
  "password": "123456",
  "plataform": "PC"
}

Caso dê tudo certo, a resposta será assim:

FORMATO DA RESPOSTA - STATUS 200

{
  "username": "demo",
  "email": "demo@gmail.com",
  "password": "$2a$10$cb42hygQ63Gb5pObic/LhuB8qChpzFffVXxKO3UIEG4DYTSC5mR42",
  "plataform": "PC",
  "img": "https://i.imgur.com/CGv8oZ7.png",
  "description": "Olá eu estou usando o G4Hub!",
  "likedGames": [],
  "_id": "623cd55c060c9b27d107109b",
  "__v": 0
}

Login

POST /users/login - FORMATO DA REQUISIÇÃO

{
  "email": "demo@gmail.com",
  "password": "123456"
}

Caso dê tudo certo, a resposta será assim:

FORMATO DA RESPOSTA - STATUS 200

{
  "user": {
    "_id": "623cd55c060c9b27d107109b",
    "username": "demo",
    "email": "demo@gmail.com",
    "password": "$2a$10$cb42hygQ63Gb5pObic/LhuB8qChpzFffVXxKO3UIEG4DYTSC5mR42",
    "plataform": "PC",
    "img": "https://i.imgur.com/CGv8oZ7.png",
    "description": "Olá eu estou usando o G4Hub!",
    "likedGames": [],
    "__v": 0
  },
  "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2MjNjZDU1YzA2MGM5YjI3ZDEwNzEwOWIiLCJpYXQiOjE2NDgxNTQxMzB9.9_ozAfMaKvcM59kdRHrm1_7UFMxEYBBsHLYANDzeVY8"
}

Listando usuário

GET /users/:userId - FORMATO DA REQUISIÇÃO

Caso dê tudo certo, a resposta será assim:

FORMATO DA RESPOSTA - STATUS 200

{
  "_id": "623cd55c060c9b27d107109b",
  "username": "demo",
  "email": "demo@gmail.com",
  "password": "$2a$10$cb42hygQ63Gb5pObic/LhuB8qChpzFffVXxKO3UIEG4DYTSC5mR42",
  "plataform": "PC",
  "img": "https://i.imgur.com/CGv8oZ7.png",
  "description": "Olá eu estou usando o G4Hub!",
  "likedGames": [],
  "__v": 0
}

Atualizando os dados do usuário

PUT /users/:userId - FORMATO DA REQUISIÇÃO

{
  "username": "Marcos Mafei",
  "email": "demo@gmail.com",
  "password": "123456"
}
{headers:{"auth-token": userToken}}

Caso dê tudo certo, a resposta será assim:

FORMATO DA RESPOSTA - STATUS 200

{
  "acknowledged": true,
  "modifiedCount": 1, //Usuário modificado
  "upsertedId": null,
  "upsertedCount": 0,
  "matchedCount": 1 //Usuário encontrado
}

Curtir jogos

Curtir/Descurtir

POST /likes/ - FORMATO DA REQUISIÇÃO

{
  "slug": "grand-theft-auto-v",
  "gameLiked": {
    //game object
    "id": 3498,
    "slug": "grand-theft-auto-v",
    "name": "Grand Theft Auto V",
    "released": "2013-09-17",
    "tba": false,
    "background_image": "https://media.rawg.io/media/games/456/456dea5e1c7e3cd07060c14e96612001.jpg"
  }
}
{headers:{"auth-token": userToken}}

Caso dê tudo certo, a resposta será assim:

FORMATO DA RESPOSTA - STATUS 200

Caso o usuário ainda não tenha dado like no jogo:

{
  "slug": "grand-theft-auto-v",
  "gameLiked": {
    "id": 3498,
    "slug": "grand-theft-auto-v",
    "name": "Grand Theft Auto V",
    "released": "2013-09-17",
    "tba": false,
    "background_image": "https://media.rawg.io/media/games/456/456dea5e1c7e3cd07060c14e96612001.jpg"
  },
  "userId": "623cd55c060c9b27d107109b",
  "_id": "623cdc92060c9b27d1071108",
  "__v": 0
}

Caso o usuário já tenha dado like no jogo:

{
  "acknowledged": true,
  "deletedCount": 1 //Like excluído
}

Jogos curtidos por um usuário

GET /likes/user/:userId - FORMATO DA REQUISIÇÃO

Caso dê tudo certo, a resposta será assim:

FORMATO DA RESPOSTA - STATUS 200

{
  "user": {
    "_id": "623cd55c060c9b27d107109b",
    "username": "Marcos Mafei",
    "email": "demo@gmail.com",
    "password": "$2a$10$cb42hygQ63Gb5pObic/LhuB8qChpzFffVXxKO3UIEG4DYTSC5mR42",
    "plataform": "PC",
    "img": "https://i.imgur.com/CGv8oZ7.png",
    "description": "Olá eu estou usando o G4Hub!",
    "__v": 0
  },
  "likedGames": []
}

Avaliação de jogos

Avaliar um jogo

POST /grades/ - FORMATO DA REQUISIÇÃO

{
  "slug": "elden-ring", //slug do jogo(nome do game sem espaços e letras maiúsculas)
  "grade": 5 //nota de 1-5
}
{headers:{"auth-token": userToken}}

FORMATO DA RESPOSTA - STATUS 200

Primeira vez avaliando o jogo:

{} //Nota salva

Reavaliando o jogo:

{
  "acknowledged": true,
  "modifiedCount": 1, //Nota atualizada com o novo valor
  "upsertedId": null,
  "upsertedCount": 0,
  "matchedCount": 1
}

Ver todas as notas de um jogo

GET /grades/:gameSlug - FORMATO DA REQUISIÇÃO

Caso dê tudo certo, a resposta será assim:

FORMATO DA RESPOSTA - STATUS 200

[
  {
    "_id": "623b80220fad35d553ebed58",
    "slug": "halo-infinite",
    "grade": 5,
    "userId": "6238dc2c1dba6757f8b36183",
    "__v": 0
  },
  {
    "_id": "623be3d5d0a7ba630386f3f3",
    "slug": "halo-infinite",
    "grade": 4,
    "userId": "62391dcb76a81ec5c8c5a8b3",
    "__v": 0
  },
  {
    "_id": "623ca9e8060c9b27d1070c43",
    "slug": "halo-infinite",
    "grade": 4,
    "userId": "623b74fa9d5636f28622b959",
    "__v": 0
  }
]

Comentários

Postar comentários

POST /comments/ - FORMATO DA REQUISIÇÃO

{
  "text": "wow, so cool!",
  "gameName": "God of War",
  "gameSlug": "god-of-war-2"
}
{headers:{"auth-token": userToken}}

Caso dê tudo certo, a resposta será assim:

FORMATO DA RESPOSTA - STATUS 200

{
  "text": "wow, so cool!",
  "gameName": "God of War",
  "gameSlug": "god-of-war-2",
  "userId": "623cd55c060c9b27d107109b",
  "likes": 0,
  "usefullPost": 0,
  "whoLiked": [],
  "user": {
    "_id": "623cd55c060c9b27d107109b",
    "username": "Marcos Mafei",
    "email": "demo@gmail.com",
    "password": "$2a$10$cb42hygQ63Gb5pObic/LhuB8qChpzFffVXxKO3UIEG4DYTSC5mR42",
    "plataform": "PC",
    "img": "https://i.imgur.com/CGv8oZ7.png",
    "description": "Olá eu estou usando o G4Hub!",
    "likedGames": [],
    "__v": 0
  },
  "_id": "623cf3e0060c9b27d107119b",
  "__v": 0
}

Listar comentários do usuário

GET /comments/user/:userId - FORMATO DA REQUISIÇÃO

Caso dê tudo certo, a resposta será assim:

FORMATO DA RESPOSTA - STATUS 200

{
  "user": {
    "_id": "623cd55c060c9b27d107109b",
    "username": "Marcos Mafei",
    "email": "demo@gmail.com",
    "password": "$2a$10$cb42hygQ63Gb5pObic/LhuB8qChpzFffVXxKO3UIEG4DYTSC5mR42",
    "plataform": "PC",
    "img": "https://i.imgur.com/CGv8oZ7.png",
    "description": "Olá eu estou usando o G4Hub!",
    "likedGames": [],
    "__v": 0
  },
  "comments": [
    {
      "_id": "623cf3e0060c9b27d107119b",
      "text": "wow, so cool!",
      "gameName": "God of War",
      "gameSlug": "god-of-war-2",
      "userId": "623cd55c060c9b27d107109b",
      "likes": 0,
      "usefullPost": 0,
      "whoLiked": [],
      "__v": 0
    }
  ]
}

Listar comentários de um jogo

GET /comments/game/:slug - FORMATO DA REQUISIÇÃO

Caso dê tudo certo, a resposta será assim:

FORMATO DA RESPOSTA - STATUS 200

[
  {
    "_id": "623b57b79d5636f28622b7a4",
    "text": "esquerda quatro morte é muito bom, vários zumbis maratonistas atrás de ti e teus amigos",
    "gameName": "Left 4 Dead 2",
    "gameSlug": "left-4-dead-2",
    "userId": "6239c37006df67b7ad5b15cc",
    "likes": 0,
    "usefullPost": 0,
    "whoLiked": [],
    "user": {
      "_id": "6239c37006df67b7ad5b15cc",
      "username": "Marmiteiro",
      "email": "marmiteiro@teste.com",
      "password": "$2a$10$ys5.Exe1g2.5F0I144f5V.UQfvMJ9wdAZeE0V7HWILBpnm1B7XEdS",
      "plataform": "PC",
      "img": "https://i.imgur.com/U4zuxo8.jpg",
      "description": "Olá eu estou usando o G4Hub!",
      "likedGames": [],
      "__v": 0
    },
    "__v": 0
  }
]

Curtir/Descurtir um comentário

POST /comments/:commentId/like - FORMATO DA REQUISIÇÃO

{
  "userId": "62391dcb76a81ec5c8c5a8b3"
}

FORMATO DA RESPOSTA - STATUS 200

Primeira vez dando like:

{
  "updateComment": {
    "acknowledged": true,
    "modifiedCount": 1,
    "upsertedId": null,
    "upsertedCount": 0,
    "matchedCount": 1
  },
  "liked": "liked" //comentário foi curtido
}

Segunda vez:

{
  "acknowledged": true,
  "modifiedCount": 1, //comentário atualizado sem o like
  "upsertedId": null,
  "upsertedCount": 0,
  "matchedCount": 1
}

Deletar comentários

DELETE /comments/:commentId/ - FORMATO DA REQUISIÇÃO

{headers:{"auth-token": userToken}}

Caso dê tudo certo, a resposta será assim:

FORMATO DA RESPOSTA - STATUS 200

{
  "acknowledged": true,
  "deletedCount": 1
}

Made by Marcos Mafei ✍️

About

API for the G4 HUB website

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published