Skip to content
This repository was archived by the owner on May 9, 2024. It is now read-only.

jesubohr/PicsharAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

897ebc9 · Aug 9, 2022

History

50 Commits
May 10, 2022
Jun 3, 2022
Jun 3, 2022
Jun 2, 2022
May 4, 2022
May 4, 2022
Jun 3, 2022
Jun 3, 2022
May 10, 2022
Aug 9, 2022
Aug 9, 2022

Repository files navigation

Picshar

Backend para un clon de Twitter + Instagram.

Endpoints

  • Endpoint de login con usuario y contraseña

    • Debe generar un JWT de sesión
    • Metodo: POST
    • Ruta: '/users/login'
    • Body: { username, password }
    • Response: { token }
  • Endpoint de login con JWT token

    • Metodo: POST
    • Ruta: '/users/login'
    • Body: { token }
    • Response: {}
  • Endpoint de registro de usuario

    • Debe generar un JWT de sesión
    • Metodo: POST
    • Ruta: '/users/'
    • Body: { username, password, email, birthdate, bio }
    • Response: { token }
  • Endpoint de informacion de usuario

    • No debe tener información privada del usuario (contraseña, fecha de cumpleaños)
    • Debe incluir el numero de publicaciones que el usuario ha dado me gusta, calculado on-demand
    • Debe incluir el numero de publicaciones que el usuario ha subido, calculado on-demand
    • Debe incluir el numero de seguidores del usuario, calculado on-demand
    • Debe incluir el numero de seguidos del usuario, calculado on-demand
    • Metodo: GET
    • Ruta: '/users/'
    • Query: { user_id }
    • Response: { username, email, bio, liked_count, posts_count, followers_count, followed_count }
  • Endpoint de publicaciones que un usuario ha subido

    • Solo está permitido si el usuario esta siguiendo al usuario, a menos que sea el usuario mismo
    • Metodo: GET
    • Ruta: '/posts/'
    • Query: { author }
    • Response: { posts }
  • Endpoint de publicaciones que un usuario ha dado "me gusta"

    • Solo está permitido si el usuario permite ver sus "me gusta", a menos que sea el usuario mismo
    • Metodo: GET
    • Ruta: '/posts/liked-by'
    • Query: { user_id }
    • Response: { posts }
  • Endpoint de publicaciones que un usuario ha guardado

    • Solo está permitido para el usuario mismo
    • Metodo: GET
    • Ruta: '/posts/saved-by'
    • Query: { user_id }
    • Response: { posts }
  • Endpoint de usuarios seguidos por un usuario

    • Solo está permitido si el usuario esta siguiendo al usuario, a menos que sea el usuario mismo
    • Metodo: GET
    • Ruta: '/follows/following'
    • Query: { user_id }
    • Response: { users }
  • Endpoint de seguidores de un usuario

    • Solo está permitido si el usuario esta siguiendo al usuario, a menos que sea el usuario mismo
    • Metodo: GET
    • Ruta: '/follows/followers'
    • Query: { user_id }
    • Response: { users }
  • Endpoint de solicitar seguir a un usuario

    • Solo permitido si el usuario ya no está siguiendo al usuario
    • Metodo: POST
    • Ruta: '/follows/request'
    • Body: { user_id }
    • Response: {}
  • Endpoint de aceptar o rechazar solicitud de seguir

    • Solo está permitido si el usuario es el que recibe la solicitud
    • Metodo: POST
    • Ruta: '/follows/response'
    • Body: { request_id, action }
    • Response: {}
    • El campo 'action' corresponde a la string 'accept' o 'reject'.
  • Get timeline de un usuario

    • Debe ser paginada
    • Metodo: GET
    • Ruta: '/posts/timeline'
    • Body: { user_id }
    • Response: { posts }
  • Endpoint de crear/subir publicacion

    • Metodo: POST
    • Ruta: '/posts/'
    • Body: { img_url, bio, author }
    • Response: { }
  • Endpoint de informacion de publicacion

    • Debe incluir el numero de likes de la publicacion, calculado on-demand
    • Debe incluir los comentarios de la publicacion, calculado on-demand
    • Metodo: GET
    • Ruta: '/posts/'
    • Body: { post_id }
    • Response: { img_url, bio, author, likes, comments }
  • Endpoint de dar me gusta a una publicación

    • Metodo: POST
    • Ruta: '/posts/like'
    • Body: { post_id }
    • Response: { }
  • Endpoint de guardar una publicación

    • Metodo: POST
    • Ruta: '/posts/save'
    • Body: { post_id }
    • Response: { }
  • Endpoint de comentar en una publicación

    • Metodo: POST
    • Ruta: '/posts/'
    • Body: { post_id, comment }
    • Response: { }

Pruebas Unitarias (Jest)

  • Login

    • Informacion valida
    • Informacion invalida (usuario no existe)
    • Informacion invalida (contraseña incorrecta)
  • Registro

    • Informacion completa
    • Informacion incompleta
  • Informacion de Usuario

    • Contraseña y fecha de cumpleaños no incluida en el response
    • Numero de publicaciones del usuario refleja el numero correcto
    • Numero de publicaciones que le gustan al usuario refleja el numero correcto
    • Numero de seguidores refleja el numero correcto
    • Numero de seguidos refleja el numero correcto
  • Lista de seguidores de un usuario

  • Lista de seguidos de un usuario

  • Solicitar seguir

  • Aceptar solicitud

    • Aceptar solicitud previamente aceptada o rechazada
  • Rechazar solicitud

    • Rechazar solicitud previamente aceptada o rechazada
  • Dar me gusta a publicacion

  • Publicaciones "gustadas" por un usuario

  • Guardar publicacion

  • Publicaciones guardadas por un usuario

  • Comentar publicacion

  • Comentarios de una publicacion