handlers

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 23, 2022 License: MIT Imports: 20 Imported by: 0

Documentation

Overview

Package handlers define las funciones de tratamiento de cada ruta a la API

Package handlers define las funciones de tratamiento de cada ruta a la API

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AbandonarLobby

func AbandonarLobby(writer http.ResponseWriter, request *http.Request)

AbandonarLobby deja el lobby en el que el usuario esté participando. Responde con status 200 si ha habido éxito, o status 500 si ha habido un error junto a su motivo en el cuerpo.

Ruta: /api/abandonarLobby Tipo: POST

func AbandonarPartida added in v0.6.4

func AbandonarPartida(writer http.ResponseWriter, request *http.Request)

AbandonarPartida deja la partida en la que el usuario esté participando. Responde con status 200 si ha habido éxito, o status 500 si ha habido un error junto a su motivo en el cuerpo.

Ruta: /api/abandonarPartida Tipo: POST

func AceptarSolicitudAmistad

func AceptarSolicitudAmistad(writer http.ResponseWriter, request *http.Request)

AceptarSolicitudAmistad acepta una solicitud de amistad entre el usuario que genera la solicitud y el indicado en el nombre. Responde con status 200 si ha habido éxito, o status 500 si ha habido un error junto a su motivo en el cuerpo.

Ruta: /api/aceptarSolicitudAmistad/{nombre} Tipo: POST

func Atacar added in v0.4.0

func Atacar(writer http.ResponseWriter, request *http.Request)

Atacar permite a un usuario atacar a un territorio adyacente a alguna de sus regiones. Para ello, debe de tener por lo menos dos ejércitos en el territorio desde el que ataca. Al atacar deberá elegir el número de dados a lanzar, entre 1 y 3. Cabe destacar que será necesario tener al menos un ejército más que el número de dados a lanzar, por ejemplo, si quiero lanzar 3 dados, el territorio tendrá que tener 4 ejércitos por lo menos. Por otro lado el defensor tirará 2 dados si tiene 2 ejércitos o más, o 1 en el caso contrario.

Para calcular el resultado del ataque, se compararán los dados con mayor valor de ambos jugadores. Si el atacante consigue un resultado mayor, el territorio defensor perderá una tropa. Por otro lado, si empatan o gana el defensor el territorio atacante perderá un ejército. En caso de que ambos jugadores hayan lanzado más de un dado, se repetirá el mismo proceso comparando el valor del segundo dado más alto de cada uno

No se puede atacar en los siguientes casos: no es el turno deñ jugador, no es la fase de ataque, el jugador tiene más de 4 cartas, hay algún territorio sin ocupar, el territorio atacado no es adyacente, el territorio atacado no es de un rival, el número de dados no está entre 1 y 3 o el número de ejércitos no supera el número de dados.

Ruta: /api/atacar/{id_territorio_origen}/{id_territorio_destino}/{num_dados} Tipo: POST

func CambiarCartas added in v0.1.5

func CambiarCartas(writer http.ResponseWriter, request *http.Request)

CambiarCartas permite a un jugador cambiar un conjunto de 3 cartas por tropas. El número de tropas recibidas dependerá del número de cambios totales realizados:

  • En el primer cambio se recibirán 4 cartas
  • Por cada cambio, se recibirán 2 cartas más que en el anterior
  • En el sexto cambio se recibirán 15 cartas
  • A partir del sexto cambio, se recibirán 5 cartas más que en el cambio anterior

Los cambios válidos son los siguientes:

  • 3 cartas del mismo tipo
  • 2 cartas del mismo tipo más un comodín
  • 3 cartas, una de cada tipo

Si el jugador cambia una carta en la que aparece un territorio ocupado por él, se añadirán dos tropas a ese territorio. Ruta: /api/cambiarCartas/{carta1}/{carta2}/{carta3}/ Tipo: POST

func ComprarObjeto added in v0.5.0

func ComprarObjeto(writer http.ResponseWriter, request *http.Request)

ComprarObjeto permite al jugador comprar un objeto de la tienda siempre y cuando tenga los puntos necesarios. Para ello, especificará como parte de la URL el identificador del objeto que desea comprar. La compra se realizará siempre que dicho objeto exista, no sea uno de los objetos iniciales, el jugador tenga los puntos suficientes para comprarlo y el jugador no lo haya comprado ya.

Devuelve status 500 en caso de error y 200 en caso contrario

Ruta: /api/comprarObjeto/{id_objeto} Tipo: POST

func ConsultarCartas added in v0.2.0

func ConsultarCartas(writer http.ResponseWriter, request *http.Request)

ConsultarCartas permite al usuario consultar las cartas que tiene en la mano mientras juega una partida Un usuario podrá consultar únicamente sus propias cartas. El JSON enviado como respuesta tendrá el siguiente formato: [{carta}, {carta}, ...]

Por ejemplo: [

	{
  		"IdCarta": 1,
  		"Tipo": 0,
  		"Region": 29,
  		"EsComodin": false
  	},
  	{
  		"IdCarta": 20,
  		"Tipo": 1,
  		"Region": 22,
  		"EsComodin": false
  	}

] Ruta: /api/consultarCartas Tipo: GET

func ConsultarColeccion added in v0.5.0

func ConsultarColeccion(writer http.ResponseWriter, request *http.Request)

ConsultarColeccion permite consultar los objetos que ha comprado un usuario, cuyo nombre se especifica como parte de la URL. Devuelve una lista de objetos codificada en JSON, con el siguiente formato:

[ {
   Id: 			int
	  Nombre: 		string
	  Descripcion: 	string
	  Precio: 		int
	  Tipo: 		string ({"avatar", "dado"})
	  Imagen:		string (blob)
	  }, {...}, ...

]

Devuelve status 500 en caso de error y 200 en caso contrario

Ruta: /api/consultarColeccion/{usuario} Tipo: GET

func ConsultarTienda added in v0.5.0

func ConsultarTienda(writer http.ResponseWriter, request *http.Request)

ConsultarTienda devuelve la lista de objetos disponibles en la tienda en formato JSON. La estructura de la lista devuelta es la siguiente:

[ {
   Id: 			int
	  Nombre: 		string
	  Descripcion: 	string
	  Precio: 		int
	  Tipo: 		string ({"avatar", "dado"})
	  Imagen:		string (blob)
	  }, {...}, ...

]

Devuelve status 500 en caso de error y 200 en caso contrario

Ruta: /api/consultarTienda Tipo: GET

func CrearPartida

func CrearPartida(writer http.ResponseWriter, request *http.Request)

CrearPartida crea una nueva partida, para la que se definirá el número máximo de jugadores, si es pública o privada, y la contraseña en caso de que fuera necesario Parámetros del formulario recibido:

	El campo "maxJugadores" indica el número máximo de jugadores, "tipo"	indica si la partida es pública o privada.
	Si la cadena "tipo" equivale a "Publica", la partida será pública, en cualquier otro caso será privada.
 El campo "password" define la contraseña necesaria para el acceso a una partida privada.

Si se produjera un error durante el procesado, se devolverá código 500 En cualquier otro caso, se devolverá código 200

Ruta: /api/crearPartida Tipo: POST

func EliminarAmigo added in v0.6.3

func EliminarAmigo(writer http.ResponseWriter, request *http.Request)

EliminarAmigo elimina una relación de amistad entre dos usuarios, el nombre del usuario a borrar de tu lista se especificará como parte de la URL. Devolverá status 500 en caso de error, 200 en cualquier otro caso.

Ruta: /api/eliminarAmigo/{nombre} Tipo: GET

func EnviarMensaje added in v0.6.4

func EnviarMensaje(writer http.ResponseWriter, request *http.Request)

EnviarMensaje permite al usuario enviar un mensaje al resto de jugadores de la partida. Para ello, deberá especificar su contenido en el campo "mensaje" del formulario. En caso de que el jugador no esté en una partida, devolverá status 500. En el caso contrario, la llamada devolverá siempre status 200.

Ruta: /api/enviarMensaje Tipo: POST

func EnviarSolicitudAmistad

func EnviarSolicitudAmistad(writer http.ResponseWriter, request *http.Request)

EnviarSolicitudAmistad envía una solicitud de amistad entre el usuario que genera la solicitud y el indicado en el nombre. Responde con status 200 si ha habido éxito, o status 500 si ha habido un error junto a su motivo en el cuerpo.

Ruta: /api/enviarSolicitudAmistad/{nombre} Tipo: POST

func Fortificar added in v0.3.0

func Fortificar(writer http.ResponseWriter, request *http.Request)

Fortificar permite al jugador mover un número determinado de tropas de un territorio dado a otro.

Las condiciones para poder fortificar son las siguientes:

Ambos territorios pertenecen al jugador y son diferentes
Ambos territorios se encuentran conectados por algún camino en el mapa que cruce únicamente
territorios controlados por dicho jugador
El número de tropas del territorio origen debe ser mayor que 1
El número de tropas a mover es un número comprendido entre [1, num_tropas_territorio_1 - 1], de tal
forma que no se puede dejar el territorio origen sin tropas

Si no es el turno del jugador, no está en una partida o no se cumplen las condiciones para la fortificación, se devolverá un status 500 junto a un mensaje de error en el cuerpo, en otro caso devolverá status 200 y generará una acción de fortificación.

Ruta: /api/fortificar/{id_territorio_origen}/{id_territorio_destino}/{num_tropas} Tipo: POST

func JugandoEnPartida added in v0.6.0

func JugandoEnPartida(writer http.ResponseWriter, request *http.Request)

JugandoEnPartida devuelve verdad si el jugador está participando en una partida, o falso en caso contrario. El formato es un booleano codificado en JSON de la siguiente forma: true false

Ruta: /api/jugandoEnPartida Tipo: GET

func ListarAmigos

func ListarAmigos(writer http.ResponseWriter, request *http.Request)

ListarAmigos devuelve una lista con los nombres de los amigos del usuario que genera la solicitud Si ocurre algún error durante el procesamiento, enviará código de error 500 En cualquier otro caso, enviará códgo 200 Dicha lista se devuelve en el siguiente formato JSON:

[ string, string, ...]

Ruta: /api/listarAmigos Tipo: GET

func Login

func Login(writer http.ResponseWriter, request *http.Request)

Login atiende respuestas de un formulario de campos 'nombre' y 'password' y loguea a un usuario acordemente. Responde con status 200 y una cookie de usuario si ha habido éxito, o status 500 si ha habido un error junto a su motivo en el cuerpo.

Ruta: /login Tipo: POST

func ModificarAspecto added in v0.5.0

func ModificarAspecto(writer http.ResponseWriter, request *http.Request)

ModificarAspecto permite al usuario equipar un aspecto que haya comprado previamente. Para ello, especificará el aspecto con el identificador del objeto en la URL. En caso de que ese objeto no exista, o no esté en la colección del usuario, no lo podrá equipar.

Devuelve status 500 en caso de error, 200 en cualquier otro caso

Ruta: /api/modificarAspecto/{id_aspecto} Tipo: POST

func ModificarBiografia added in v0.5.0

func ModificarBiografia(writer http.ResponseWriter, request *http.Request)

ModificarBiografia permite al usuario modificar su biografía, especificando una nueva en el campo "biografia" del formulario enviado.

Devuelve status 500 en caso de error y 200 en caso contrario

Ruta: /api/modificarBiografia Tipo: Post

func ModificarEmail added in v1.0.0

func ModificarEmail(writer http.ResponseWriter, request *http.Request)

ModificarEmail permite al usuario modificar su email, especificando una nueva en el campo "email" del formulario enviado.

Devuelve status 500 en caso de error y 200 en caso contrario

Ruta: /api/modificarEmail Tipo: Post

func ModificarEmailYBiografia added in v1.0.0

func ModificarEmailYBiografia(writer http.ResponseWriter, request *http.Request)

ModificarEmailYBiografia permite al usuario modificar su email y su biografía al mismo tiempo, especificando los nuevos en los campos "email" y "biografia" del formulario enviado.

Devuelve status 500 en caso de error y 200 en caso contrario

Ruta: /api/modificarEmailYBiografia Tipo: Post

func ObtenerAvatar added in v0.6.4

func ObtenerAvatar(writer http.ResponseWriter, request *http.Request)

ObtenerAvatar devuelve una imagen codificada como octet-stream para el avatar del usuario indicado.

Devuelve un error 500 en caso de que el usuario no exista u ocurra cualquier otro error

Ruta: /api/obtenerFotoPerfil/{usuario} Tipo: GET

func ObtenerDados added in v0.6.4

func ObtenerDados(writer http.ResponseWriter, request *http.Request)

ObtenerDados devuelve una imagen codificada como octet-stream para la cara indicada de los dados equipados del usuario indicado. La cara debe ser un valor entre 1 y 6, correspondiente al valor de los dados.

Devuelve un error 500 en caso de que la cara sea inválida, el usuario no exista u ocurra cualquier otro error.

Ruta: /api/obtenerDados/{usuario}/{cara} Tipo: GET

func ObtenerEstadoLobby

func ObtenerEstadoLobby(writer http.ResponseWriter, request *http.Request)

ObtenerEstadoLobby devuelve el estado del lobby de una partida identificada por su id Devuelve si es pública o no, si está o no en curso, el número máximo de jugadores y los jugadores que se encuentran en el lobby Devuelve código de error 500 en caso de error, código 200 en cualquier otro caso El JSON devuelto tiene el siguiente formato

{
 "EnCurso":bool,
	"EsPublico":bool,
 "Jugadores":int,
 "MaxJugadores":int,
 "NombresJugadores": [string, string, ...]
}

Ruta: /api/obtenerEstadoLobby/{id} Tipo: GET

func ObtenerEstadoPartida

func ObtenerEstadoPartida(writer http.ResponseWriter, request *http.Request)

ObtenerEstadoPartida devuelve la lista de acciones transcurridas desde la última consulta del usuario hasta el momento, que deberán ser procesadas en orden. El formato es una lista de acciones, codificada en JSON de la siguiente forma: [{acción}, {acción}]

Donde cada acción es una acción específica a distinguir según el primer campo común a todas, "IDAccion", para su interpretación.

Ejemplo: [

{
   "IDAccion":0,
   "Region":0,
   "TropasRestantes":19,
   "TerritoriosRestantes":41,
   "Jugador":"usuario4"
},
{
   "IDAccion":1,
   "Jugador":"usuario5"
}

]

La lista de acciones y su formato en JSON están disponibles en el módulo de logica_juego, en acciones.go

Ruta: /api/obtenerEstadoPartida Tipo: GET

func ObtenerEstadoPartidaCompleto added in v0.6.0

func ObtenerEstadoPartidaCompleto(writer http.ResponseWriter, request *http.Request)

ObtenerEstadoPartidaCompleto devuelve la lista de todas las acciones transcurridas desde el inicio de la partida hasta el momento, que deberán ser procesadas en orden. Las siguientes llamadas a ObtenerEstadoPartida consultarán las acciones desde dicho momento, pudiendo ser por tanto un sustituto a ObtenerEstadoPartida. El formato es una lista de acciones, codificada en JSON de la siguiente forma: [{acción}, {acción}]

Donde cada acción es una acción específica a distinguir según el primer campo común a todas, "IDAccion", para su interpretación.

Ejemplo: [

{
   "IDAccion":0,
   "Region":0,
   "TropasRestantes":19,
   "TerritoriosRestantes":41,
   "Jugador":"usuario4"
},
{
   "IDAccion":1,
   "Jugador":"usuario5"
}

]

La lista de acciones y su formato en JSON están disponibles en el módulo de logica_juego, en acciones.go

Ruta: /api/obtenerEstadoPartida Tipo: GET

func ObtenerImagenItem added in v0.6.4

func ObtenerImagenItem(writer http.ResponseWriter, request *http.Request)

ObtenerImagenItem devuelve la imagen de un ítem, dado su ID, codificado como blob (octet-stream)

Devuelve un error 500 en caso de que el ID sea inválido u ocurra cualquier otro error

Ruta: /api/obtenerImagenItem/{id} Tipo: GET

func ObtenerJugadoresPartida added in v0.6.2

func ObtenerJugadoresPartida(writer http.ResponseWriter, request *http.Request)

ObtenerJugadoresPartida devuelve una lista con los nombres de los jugadores de la partida en la que se está participando. Si no se está participando en una partida o la partida no está en curso, se devolverá un código 500 junto al error en el cuerpo. En otro caso, se devolverá un código 200 y una lista de nombres.

El formato es una lista de nombres, codificada en JSON de la siguiente forma: [string, string, ...]

Ruta: /api/obtenerJugadoresPartida Tipo: GET

func ObtenerNotificaciones

func ObtenerNotificaciones(writer http.ResponseWriter, request *http.Request)

ObtenerNotificaciones devuelve un listado codificado en JSON de notificaciones a mostrar, relativas al usuario que lo solicita. Si ocurre algún error durante el procesamiento, enviará código de error 500 En cualquier otro caso, enviará código 200 y la lista de notificaciones.

El formato de la respuesta JSON es el siguiente:

[notificacion1..., notificacion2...]

Ejemplo:

[{"IDNotificacion":0,"Jugador":"usuario2"}, {"IDNotificacion":1,"JugadorPrevio":"usuario6"}]

La lista de notificaciones y su formato en JSON están disponibles en el módulo de logica_juego, en notificaciones.go

Ruta: /api/obtenerNotificaciones Tipo: GET

func ObtenerNumeroNotificaciones added in v0.8.1

func ObtenerNumeroNotificaciones(writer http.ResponseWriter, request *http.Request)

ObtenerNumeroNotificaciones devuelve el número de notificaciones que se van a recibir en ObtenerNotificaciones, sin consumirlas.

El formato de la respuesta JSON es el siguiente:

int

Ruta: /api/obtenerNumeroNotificaciones Tipo: GET

func ObtenerPartidas

func ObtenerPartidas(writer http.ResponseWriter, request *http.Request)

ObtenerPartidas devuelve un listado de partidas codificado en JSON, con el siguiente orden:

1- partidas privadas, de más a menos amigos presentes
2- partidas públicas, de más a menos amigos presentes
3- partidas públicas sin amigos: de más a menos jugadores
4- partidas privadas sin amigos: de más a menos jugadores

El contenido JSON tendrá la siguiente forma:

[ // Lista de elementos de partida (Nota: Será nula si no existen partidas)

													// Elemento de partida
 {
   "IdPartida": int,							 	// ID de partida (Nota: Se deberá usar como referencia en el resto de peticiones relativas a ella)
   "EsPublica": bool,							// Flag de partida pública o privada
   "NumeroJugadores": int,						// Número de jugadores presentes en el lobby
   "MaxNumeroJugadores": int,					// Número de jugadores máximo establecido
   "AmigosPresentes": [ string, string, ...], 	// Lista de nombres de amigos presentes en el lobby (Nota: Será nulo si "NumAmigosPresentes" tiene como valor 0)
   "NumAmigosPresentes": int						// Número de amigos presentes en el lobby
 },

 {...}

]

Ejemplo: [

{
  "IdPartida": 1,
  "EsPublica": false,
  "NumeroJugadores": 4,
  "MaxNumeroJugadores": 6,
  "AmigosPresentes": [
    "amigo1",
    "amigo2"
  ],
  "NumAmigosPresentes": 2
},
{
  "IdPartida": 2,
  "EsPublica": false,
  "NumeroJugadores": 4,
  "MaxNumeroJugadores": 6,
  "AmigosPresentes": [
    "amigo3"
  ],
  "NumAmigosPresentes": 1
},
{
  "IdPartida": 3,
  "EsPublica": true,
  "NumeroJugadores": 3,
  "MaxNumeroJugadores": 6,
  "AmigosPresentes": null,
  "NumAmigosPresentes": 0
}

]

Si ocurre algún error durante el procesamiento, se devolverá un status 500.

Ruta: /api/obtenerPartidas Tipo: GET

func ObtenerPerfilUsuario

func ObtenerPerfilUsuario(writer http.ResponseWriter, request *http.Request)

ObtenerPerfilUsuario devuelve la información del perfil de un usuario, definido como parte de la URL Si ocurre algún error durante el procesamiento, enviará código de error 500 En cualquier otro caso, enviará códgo 200

El formato de la respuesta JSON es el siguiente:

   {
	   "Email": string
	   "Nombre": string
	   "Biografia": string
	   "PartidasGanadas": int
	   "PartidasTotales": int
	   "Puntos": int
	   "ID_dado": int
	   "ID_avatar": int
	   "EsAmigo": bool
	   "SolicitudRecibida": bool
	   "SolicitudPendiente": bool
   }

Ruta: /api/obtenerPerfil/{nombre} Tipo: GET

func ObtenerRanking added in v0.5.0

func ObtenerRanking(writer http.ResponseWriter, request *http.Request)

ObtenerRanking devuelve una lista de todos los usuarios registrados, ordenados por el número de partidas ganadas. Dicha lista se devolverá en el siguiente formato JSON: [

 {
  NombreUsuario: string
  PartidasGanadas: int
  PartidasTotales: int
	}, {...}, ...

]

Devolverá status 500 en caso de error y status 200 en cualquier otro caso

Ruta: /api/ranking Tipo: GET

func ObtenerSolicitudesPendientes added in v0.1.2

func ObtenerSolicitudesPendientes(writer http.ResponseWriter, request *http.Request)

ObtenerSolicitudesPendientes devuelve una lista de nombres de usuario a los que se les ha enviado una solicitud de amistad aún pendiente por aceptar o rechazar, codificada en JSON.

El formato de la respuesta JSON es el siguiente: ["nombre1", "nombre2", ...]

Ruta: /api/obtenerSolicitudesPendientes Tipo: GET

func ObtenerTokenResetPassword added in v0.6.4

func ObtenerTokenResetPassword(writer http.ResponseWriter, request *http.Request)

ObtenerTokenResetPassword envía por email al usuario indicado un link de reset de contraseña, si existe. Devuelve status 500 en caso de error y status 200 en cualquier otro caso

Entrada: formulario con campo "usuario"

Ruta: /obtenerTokenResetPassword Tipo: POST

func ObtenerUsuariosSimilares

func ObtenerUsuariosSimilares(writer http.ResponseWriter, request *http.Request)

ObtenerUsuariosSimilares devuelve una lista de nombres de usuario que coincidan con un patrón, especificado en al parámetro "patron" de la URL, ordenados alfabéticamente e indicando si son amigos del usuario que lo solicita o no Los nombres de usuario coincidirán con dicho patrón o empezarán por él Si ocurre algún error durante el procesamiento, enviará código de error 500 En cualquier otro caso, enviará código 200 El formato de la respuesta JSON es el siguiente:

   [
       {
           "Nombre": string,
           "EsAmigo": bool,
			  "SolicitudRecibida": bool,
		 	  "SolicitudPendiente": bool
       },
       {
           "Nombre": string,
           "EsAmigo": bool,
			  "SolicitudRecibida": bool,
		 	  "SolicitudPendiente": bool
       },
		  ...
   ]

Ruta: /api/obtenerUsuariosSimilares/{patron} Tipo: GET

func Ocupar added in v0.4.0

func Ocupar(writer http.ResponseWriter, request *http.Request)

Ocupar permite a un usuario ocupar un territorio sin tropas, especificando el territorio a ocupar y el número de tropas que quiere mover a él. Dichas tropas se moverán desde el territorio con el que conquistó la región a ser ocupada.

Para ocupar se deben cumplir las siguientes condiciones: hay alguna región sin tropas, dicha región es adyacente a la región desde la que se inició el último ataque, la ocupación se realiza durante el turno del jugador y en la fase de ataque, el número de tropas asignadas por la ocupación no deja al territorio origen sin tropas, el número de tropas asignadas es mayor al número de dados usados en el último ataque menos el número de ejércitos que perdió el atacante en dicho ataque.

Cabe destacar que siempre que un territorio quede sin tropas tras un ataque, el juego no permitirá continuar atacando ni cambiar de fase o turno hasta que dicho territorio sea ocupado, de manera que solo podrá haber un territorio sin ocupar a la vez. Ruta: /api/ocupar/{territorio_a_ocupar}/{num_ejercitos} Tipo: POST

func PasarDeFase added in v0.2.0

func PasarDeFase(writer http.ResponseWriter, request *http.Request)

PasarDeFase permite al jugador actual cambiar de fase dentro de su propio turno, siendo estas fases Refuerzo, ataque y fortificación. Cada fase tendrá unas condiciones especiales para el cambio de turno: En el refuerzo, no podrá cambiar de fase si tiene más de 4 cartas o si le quedan tropas por asignar En el ataque, no podrá cambiar de fase si tiene más de 4 cartas o si tiene que ocupar un territorio y aún no lo ha hecho. En la fortificación podrá cambiar de fase (dándole el turno a otro jugador) libremente

Si no es el turno del jugador, no está en una partida o no se cumplen las condiciones para el cambio de fase, devolverá un status 500 junto a un mensaje de error en el cuerpo, en otro caso devolverá status 200.

Ruta: /api/pasarDeFase Tipo: POST

func RechazarSolicitudAmistad

func RechazarSolicitudAmistad(writer http.ResponseWriter, request *http.Request)

RechazarSolicitudAmistad rechaza una solicitud de amistad entre el usuario que genera la solicitud y el indicado en el nombre. Responde con status 200 si ha habido éxito, o status 500 si ha habido un error junto a su motivo en el cuerpo.

Ruta: /api/rechazarSolicitudAmistad/{nombre} Tipo: POST

func ReforzarTerritorio

func ReforzarTerritorio(writer http.ResponseWriter, request *http.Request)

ReforzarTerritorio refuerza un territorio con su identificador numérico "id" con un valor de tropas numérico codificado en "numTropas", ambos parámetros de la URL.

En caso de éxito, se devolverá un código HTTP 200 y aparecerá una nueva acción "AccionReforzar" en la siguiente consulta al estado indicando los detalles de la acción realizada.

En caso de error (número de tropas incorrecto, el turno del jugador es incorrecto, etc.) se devolverá un código HTTP 500 junto al mensaje de error en el cuerpo.

Ruta: /reforzarTerritorio/{id}/{numTropas} Tipo: POST

func Registro

func Registro(writer http.ResponseWriter, request *http.Request)

Registro atiende respuestas de un formulario de campos 'nombre', 'email' y 'password' y registra un usuario acordemente. Responde con status 200 si ha habido éxito, o status 500 si ha habido un error junto a su motivo en el cuerpo.

Ruta: /registro Tipo: POST

func ResetearContraseña added in v0.6.4

func ResetearContraseña(writer http.ResponseWriter, request *http.Request)

ResetearContraseña resetea la contraseña del usuario que tiene el token indicado. Devuelve status 500 en caso de error y status 200 en cualquier otro caso

Entrada: formulario con campos "password" y "token"

Ruta: /resetearPassword Tipo: POST

func ResetearContraseñaLogin added in v1.0.0

func ResetearContraseñaLogin(writer http.ResponseWriter, request *http.Request)

ResetearContraseñaLogin permite al usuario cambiar su contraseña mientras está conectado (y por tanto proporciona una cookie válida), especificando su contraseña actual en el campo "passwordActual" y la contraseña nueva en el campo "passwordNueva" del formulario

Devuelve status 500 en caso de error y 200 en caso contrario

Ruta: /api/resetearPasswordEnLogin Tipo: Post

func ResumirPartida added in v0.6.4

func ResumirPartida(writer http.ResponseWriter, request *http.Request)

ResumirPartida devuelve un resumen completo de la partida hasta el momento, actualizando el índice de acciones leídas en el proceso para permitir pasar directamente a solicitar acciones.

El formato es el siguiente:

	{
		Jugadores: [string...],
		TurnoJugador: string,
		Fase: {0..3} (Inicio, refuerzo, ataque y fortificar)
		Terminada: bool,
		EstadosJugadores: {
			string {
				NumCartas: int,
				Cartas [ // Solo poblado para el usuario que solicita el resumen
					{
						IdCarta: int
						Tipo: {0..2} (Infantería, Caballería, Artillería)
						Region: int,
						EsComodin: bool
					}, ...
				],
				Tropas: int
				Expulsado: bool,
        		Eliminado: bool
			}
	   },
	   Mapa: {
			int :{ // Número de región
        	Ocupante: string,
        	NumTropas: int
    },
	  OcupacionPendiente: bool,			// true si el jugador del turno tiene una ocupación pendiente
	  TerritorioOcupacionOrigen: int, 	// Número de región desde la que se ocupa
	  TerritorioOcupacionDestino: int, 	// Número de región que se ocupa
	}

Ejemplo:

	{
  "Jugadores":[
     "jugador1",
     "jugador2",
     "jugador3",
     "jugador4",
     "jugador5",
     "jugador6"
  ],
  "TurnoJugador":"jugador1",
  "Fase":0,
  "Terminada":false,
  "EstadosJugadores":{
     "jugador1":{
        "NumCartas":4,
        "Cartas":[
           {
              "IdCarta":1,
              "Tipo":0,
              "Region":3,
              "EsComodin":true
           },
           {
              "IdCarta":4,
              "Tipo":2,
              "Region":22,
              "EsComodin":false
           },
           {
              "IdCarta":5,
              "Tipo":2,
              "Region":0,
              "EsComodin":false
           },
           {
              "IdCarta":6,
              "Tipo":2,
              "Region":27,
              "EsComodin":false
           }
        ],
        "Tropas":13,
        "Expulsado":false,
        "Eliminado":false
     },
     "jugador2":{
        "NumCartas":0,
        "Cartas":null,
        "Tropas":13,
        "Expulsado":false,
        "Eliminado":false
     },
     "jugador3":{
        "NumCartas":0,
        "Cartas":null,
        "Tropas":13,
        "Expulsado":false,
        "Eliminado":false
     },
     "jugador4":{
        "NumCartas":0,
        "Cartas":null,
        "Tropas":13,
        "Expulsado":false,
        "Eliminado":false
     },
     "jugador5":{
        "NumCartas":0,
        "Cartas":null,
        "Tropas":13,
        "Expulsado":false,
        "Eliminado":false
     },
     "jugador6":{
        "NumCartas":0,
        "Cartas":null,
        "Tropas":13,
        "Expulsado":false,
        "Eliminado":false
     }
  },
  "Mapa":{
     "0":{
        "Ocupante":"jugador3",
        "NumTropas":6
     },

		...

     "41":{
        "Ocupante":"jugador5",
        "NumTropas":3
     }
  },
	 "OcupacionPendiente": true,
	 "TerritorioOcupacionOrigen": 2,
	 "TerritorioOcupacionDestino": 5
}

Ruta: /api/resumirPartida Tipo: GET

func UnirseAPartida

func UnirseAPartida(writer http.ResponseWriter, request *http.Request)

UnirseAPartida permite al usuario unirse a una partida en caso de que no esté en otra, no esté completa la partida, sea pública, o tenga su contraseña si es privada. Si se produciera algún error, devuelve código 500, en caso contrario 200 Los campos del formulario son "password" e "idPartida"

Ruta: /api/unirseAPartida Tipo: POST

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL