Diferencia entre revisiones de «Almacenamiento de votos - 17 18 - G2»

De Wiki de EGC
Saltar a: navegación, buscar
(Formato de los commits)
(API)
 
(No se muestran 19 ediciones intermedias del mismo usuario)
Línea 13: Línea 13:
 
*Debe comunicarse con otros submódulos para obtener los votos y guardarlos.
 
*Debe comunicarse con otros submódulos para obtener los votos y guardarlos.
 
*Debe comunicarse con otros submódulos para entregar los votos.
 
*Debe comunicarse con otros submódulos para entregar los votos.
*Repositorio donde puede encontrarse el código: https://github.com/AgoraUS-G1-1617/Almacenamiento
 
*Wiki de la asignatura referente al submódulo: http://1984.lsi.us.es/wiki-egc/index.php/Almacenamiento_1617_G1
 
  
 
= Objetivo del subsistema =
 
= Objetivo del subsistema =
Línea 23: Línea 21:
 
Enlaces de interés para acceder a toda la información sobre nuestro módulo:
 
Enlaces de interés para acceder a toda la información sobre nuestro módulo:
  
<li>El repositorio de GitHub del equipo será accesible [https://github.com/EGC-G2-Trabajo-1718/almacenamiento aquí]</li>
+
<li>El repositorio de GitHub del equipo integrado con los demás subsistemas será accesible [https://github.com/EGC-G2-Trabajo-1718/almacenamiento aquí]</li>
 +
 
 +
<li>El repositorio interno de GitHub del equipo será accesible [https://github.com/jesvazarg/EGC-Almacenamiento-G2 aquí]</li>
  
 
<li>Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/94 aquí]</li>
 
<li>Puede acceder a nuestro proyecto en Opera [http://opera.eii.us.es/egc/public/trabajo/ver/id/94 aquí]</li>
Línea 58: Línea 58:
 
  * <b>fix:</b> Se soluciona un bug.
 
  * <b>fix:</b> Se soluciona un bug.
 
  * <b>docs:</b> Se realizaron cambios en la documentacion.
 
  * <b>docs:</b> Se realizaron cambios en la documentacion.
* <b>style:</b> Se aplico formato, comas y puntos faltantes, etc; Sin cambios en el codigo.
+
  * <b>test:</b> Se añadieron pruebas.
  * <b>test:</b> Se añadieron pruebas, refactorizacion de pruebas; Sin cambios en el codigo.
 
  
 
Formato general de los commits:
 
Formato general de los commits:
  
 
  '''Título''': Título del commit.
 
  '''Título''': Título del commit.
  '''Descripción''': Tipo de funcionalidad y breve resumen.
+
  '''Descripción''': Tipo de funcionalidad y breve resumen.
'''Pie''': (opcional) Se indica a que incidencia pertenece, si procede.
 
  
 
= Gestión de incidencias =
 
= Gestión de incidencias =
  
Usaremos la herramienta que nos ofrece Github para el control de las incidencias.
+
Usaremos nuestro grupo de Telegram y nuestro tablero de Trello como gestor de incidencias internas y usaremos Github para el control de las incidencias externas.
  
 
== Formato general para detallar incidencias ==
 
== Formato general para detallar incidencias ==
Línea 89: Línea 87:
 
== Tecnologías elegidas ==
 
== Tecnologías elegidas ==
 
  '''Subsistema''': Almacenamiento de votos
 
  '''Subsistema''': Almacenamiento de votos
  '''Lenguaje/Herramienta''': Python 2.7; IDE: Pycharm
+
  '''Lenguaje/Herramienta''': Python 2.7; IDE: Pycharm Community 2017.3
  '''Sistema de gestión de bibliotecas''': pip
+
  '''Sistema de gestión de bibliotecas''': PIP
 
  '''Bibliotecas''':  
 
  '''Bibliotecas''':  
 
     '''Flask''': 0.12.2
 
     '''Flask''': 0.12.2
 
     '''flask_restful''': 0.3.6
 
     '''flask_restful''': 0.3.6
 
     '''MySQLdb''': 1.2.5
 
     '''MySQLdb''': 1.2.5
 +
    '''requests''': 2.18.4
 +
    '''pycrypto''': 2.6.1
 
  '''Base de datos''':  MySQL Community Server 5.7.19
 
  '''Base de datos''':  MySQL Community Server 5.7.19
  
Línea 109: Línea 109:
 
         - token_votacion: (String) identificador de la votacion [fk]
 
         - token_votacion: (String) identificador de la votacion [fk]
  
*Los datos relativos a la votación los recibiremos cifrados, y para garantizar la anonimización de cada voto añadiremos una segunda capa de encriptación antes de almacenarlos.
+
*Los datos relativos a la votación los recibiremos cifrados, y para garantizar la anonimización de cada voto añadiremos una segunda capa de encriptación al token de las respuestas antes de almacenarlos.
  
- Tabla autenticacion:
+
- Tabla tokens:
  
 +
        - id: (int) identificador del token [pk, autoincrementable]
 
         - token_bd: (String) Token para autenticarse y acceder a nuestra BBDD
 
         - token_bd: (String) Token para autenticarse y acceder a nuestra BBDD
  
Línea 176: Línea 177:
 
| msg
 
| msg
 
| String
 
| String
| 404 NOT FOUND El usuario no ha realizado ningun voto en esta votacion.
+
| 401 NOT FOUND El usuario no ha realizado ningun voto en esta votacion.
 +
|-
 +
! Nombre
 +
! Tipo
 +
! Descripción
 +
|-
 +
| result
 +
| Boolean
 +
| Código de error
 +
|-
 +
| msg
 +
| String
 +
| 401 UNAUTHORISED Token incorrecto.
 
|}
 
|}
  
Línea 196: Línea 209:
 
     }
 
     }
  
 +
    {
 +
      "code": "404 UNAUTHORISED"
 +
      "msg": "Token incorrecto."
 +
    }
 
== Comprobar voto pregunta ==
 
== Comprobar voto pregunta ==
  
Línea 212: Línea 229:
 
     * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
 
     * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
 
     * token_usuario: Identificador del usuario (String)
 
     * token_usuario: Identificador del usuario (String)
 +
    * token_votación: Identificador de la votación (String)
 
     * token_pregunta: Identificador de la pregunta (String)
 
     * token_pregunta: Identificador de la pregunta (String)
    * token_votación: Identificador de la votación (String)
 
  
 
'''Ejemplo de petición:'''
 
'''Ejemplo de petición:'''
Línea 245: Línea 262:
 
| String
 
| String
 
| 404 NOT FOUND El usuario no ha realizado ningun voto en esta pregunta de esta votacion.
 
| 404 NOT FOUND El usuario no ha realizado ningun voto en esta pregunta de esta votacion.
 +
|-
 +
! Nombre
 +
! Tipo
 +
! Descripción
 +
|-
 +
| result
 +
| Boolean
 +
| Código de error
 +
|-
 +
| msg
 +
| String
 +
| 401 UNAUTHORISED Token incorrecto.
 
|}
 
|}
  
Línea 260: Línea 289:
  
 
     {
 
     {
       "code": "404 NOT FOUND"
+
       "code": "401 NOT FOUND"
 
       "msg": "El usuario no ha realizado ningun voto en esta votacion."
 
       "msg": "El usuario no ha realizado ningun voto en esta votacion."
 
     }
 
     }
  
 +
    {
 +
      "code": "404 UNAUTHORISED"
 +
      "msg": "Token incorrecto."
 +
    }
 
== Almacenar voto ==
 
== Almacenar voto ==
  
 
'''URL:'''  
 
'''URL:'''  
   https://almacenamiento.nvotesus.es/api/post/almacenar_voto/{token_bd}/{token_usuario}/{token_pregunta}/{token_respuesta}/{token_votacion}
+
   https://almacenamiento.nvotesus.es/api/post/almacenar_voto
  
 
'''Parámetros de petición:'''
 
'''Parámetros de petición:'''
 
     * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
 
     * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
 
     * token_usuario: Identificador del usuario (String)
 
     * token_usuario: Identificador del usuario (String)
 +
    * token_votacion: Identificador de la votación (String)
 
     * token_pregunta: Identificador de la pregunta (String)
 
     * token_pregunta: Identificador de la pregunta (String)
 
     * token_respuesta: Identificador de la respuesta (String)
 
     * token_respuesta: Identificador de la respuesta (String)
 +
 +
''' Descripción '''
 +
 +
Almacena el voto pedido en la base de datos.
 +
 +
''' Petición HTTP '''
 +
 +
POST
 +
 +
'''Ejemplo de petición'''
 +
    https://almacenamiento.nvotesus.es/api/post/almacenar_voto/
 +
 +
'''Respuesta:'''
 +
 +
{| border="1" style="border-collapse:collapse"
 +
|-
 +
! Nombre
 +
! Tipo
 +
! Descripción
 +
|-
 +
| result
 +
| Boolean
 +
| Código de éxito
 +
|-
 +
| msg
 +
| String
 +
| 200 OK El voto se ha almacenado satisfactoriamente.
 +
|-
 +
! Nombre
 +
! Tipo
 +
! Descripción
 +
|-
 +
| result
 +
| Boolean
 +
| Código de error
 +
|-
 +
| msg
 +
| String
 +
| 400 BAD REQUEST Un usuario sólo puede votar una vez a una pregunta.
 +
|-
 +
! Nombre
 +
! Tipo
 +
! Descripción
 +
|-
 +
| result
 +
| Boolean
 +
| Código de error
 +
|-
 +
| msg
 +
| String
 +
| 401 UNAUTHORISED Token incorrecto.
 +
|}
 +
 +
'''Ejemplo de respuesta:'''
 +
 +
    {
 +
      "code": "200 OK"
 +
      "message": "El voto se ha almacenado satisfactoriamente."
 +
    }
 +
 +
    {
 +
      "code": "400 BAD REQUEST"
 +
      "message": "Un usuario sólo puede votar una vez a una pregunta."
 +
    }
 +
 +
    {
 +
      "code": "404 UNAUTHORISED"
 +
      "msg": "Token incorrecto."
 +
    }
 +
 +
== Almacenar voto múltiple ==
 +
 +
'''URL:'''
 +
  https://almacenamiento.nvotesus.es/api/post/almacenar_voto_multiple
 +
 +
'''Parámetros de petición:'''
 +
    * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
 +
    * token_usuario: Identificador del usuario (String)
 
     * token_votacion: Identificador de la votación (String)
 
     * token_votacion: Identificador de la votación (String)
 +
    * token_voto: Identificador del voto, es un array que contiene el token de la pregunta y el token de la respuesta (String)
  
 
''' Descripción '''
 
''' Descripción '''
Línea 285: Línea 398:
  
 
'''Ejemplo de petición'''
 
'''Ejemplo de petición'''
     https://almacenamiento.nvotesus.es/api/post/almacenar_voto/1/1/1/1/1
+
     https://almacenamiento.nvotesus.es/api/post/almacenar_voto_multiple/
  
 
'''Respuesta:'''
 
'''Respuesta:'''
Línea 314: Línea 427:
 
| String
 
| String
 
| 400 BAD REQUEST Un usuario sólo puede votar una vez a una pregunta.
 
| 400 BAD REQUEST Un usuario sólo puede votar una vez a una pregunta.
 +
|-
 +
! Nombre
 +
! Tipo
 +
! Descripción
 +
|-
 +
| result
 +
| Boolean
 +
| Código de error
 +
|-
 +
| msg
 +
| String
 +
| 401 UNAUTHORISED Token incorrecto.
 
|}
 
|}
  
Línea 326: Línea 451:
 
       "code": "400 BAD REQUEST"
 
       "code": "400 BAD REQUEST"
 
       "message": "Un usuario sólo puede votar una vez a una pregunta."
 
       "message": "Un usuario sólo puede votar una vez a una pregunta."
 +
    }
 +
 +
    {
 +
      "code": "404 UNAUTHORISED"
 +
      "msg": "Token incorrecto."
 
     }
 
     }
  
Línea 331: Línea 461:
  
 
'''URL:'''  
 
'''URL:'''  
   https://almacenamiento.nvotesus.es/api/get/obtener_todo/{token_bd}/{token_pregunta}/{token_votacion}
+
   https://almacenamiento.nvotesus.es/api/get/obtener_todo/{token_bd}/{token_votacion}/{token_pregunta}
  
 
'''Parámetros de petición:'''
 
'''Parámetros de petición:'''
 
     * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
 
     * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
 +
    * token_votación: Identificador de la votación (String)
 
     * token_pregunta: Identificador de la pregunta (String)
 
     * token_pregunta: Identificador de la pregunta (String)
    * token_votación: Identificador de la votación (String)
 
  
 
''' Descripción '''
 
''' Descripción '''
Línea 371: Línea 501:
 
| msg
 
| msg
 
| String
 
| String
| 404 NOT FOUND  
+
| 404 NOT FOUND
 +
|-
 +
! Nombre
 +
! Tipo
 +
! Descripción
 +
|-
 +
| result
 +
| Boolean
 +
| Código de error
 +
|-
 +
| msg
 +
| String
 +
| 401 UNAUTHORISED Token incorrecto.
 +
|}
 +
 
 +
''' Ejemplo de respuesta '''
 +
 
 +
    {
 +
      "1": {
 +
          "id": "...",
 +
          "token_usuario": "...",
 +
          "token_pregunta": "...",
 +
          "token_respuesta": "..."
 +
      }
 +
      "2": {
 +
          "id": "...",
 +
          "token_usuario": "...",
 +
          "token_pregunta": "...",
 +
          "token_respuesta": "..."
 +
      }
 +
    }
 +
 
 +
    {
 +
      "code": "404 NOT FOUND"
 +
      "message": "..."
 +
    }
 +
 
 +
    {
 +
      "code": "404 UNAUTHORISED"
 +
      "msg": "Token incorrecto."
 +
    }
 +
 
 +
== Obtener votos votación ==
 +
 
 +
'''URL:'''
 +
  https://almacenamiento.nvotesus.es/api/get/obtener_votos_votacion/{token_bd}/{token_votacion}
 +
 
 +
'''Parámetros de petición:'''
 +
    * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
 +
    * token_votación: Identificador de la votación (String)
 +
 
 +
''' Descripción '''
 +
 
 +
Obtener todos los votos de una votación.
 +
 
 +
'''Ejemplo de petición:'''
 +
    https://almacenamiento.nvotesus.es/api/get/obtener_votos_votacion/1/1
 +
 
 +
'''Respuesta:'''
 +
 
 +
{| border="1" style="border-collapse:collapse"
 +
|-
 +
! Nombre
 +
! Tipo
 +
! Descripción
 +
|-
 +
| result
 +
| JSON
 +
| Objetos votos
 +
|-
 +
| msg
 +
| String
 +
| 200 OK
 +
|-
 +
! Nombre
 +
! Tipo
 +
! Descripción
 +
|-
 +
| result
 +
| Boolean
 +
| Código de error
 +
|-
 +
| msg
 +
| String
 +
| 404 NOT FOUND
 +
|-
 +
! Nombre
 +
! Tipo
 +
! Descripción
 +
|-
 +
| result
 +
| Boolean
 +
| Código de error
 +
|-
 +
| msg
 +
| String
 +
| 401 UNAUTHORISED Token incorrecto.
 
|}
 
|}
  
Línea 394: Línea 620:
 
       "code": "404 NOT FOUND"
 
       "code": "404 NOT FOUND"
 
       "message": "..."
 
       "message": "..."
 +
    }
 +
 +
    {
 +
      "code": "404 UNAUTHORISED"
 +
      "msg": "Token incorrecto."
 
     }
 
     }

Revisión actual del 18:16 15 ene 2018

Miembros

  • Elena Camero Ruiz
  • Marta Carmona Oliva
  • José Luis Martínez Quiñones
  • Pedro Serrano Ramos
  • Jesús Vázquez Argumedo (Coordinador)

Consideraciones

  • Debe comunicarse con otros submódulos para obtener los votos y guardarlos.
  • Debe comunicarse con otros submódulos para entregar los votos.

Objetivo del subsistema

Su objetivo principal es el almacenamiento de los votos cifrados para garantizar su seguridad.

Enlaces

Enlaces de interés para acceder a toda la información sobre nuestro módulo:

  • El repositorio de GitHub del equipo integrado con los demás subsistemas será accesible aquí
  • El repositorio interno de GitHub del equipo será accesible aquí
  • Puede acceder a nuestro proyecto en Opera aquí
  • Subsistemas relacionados

    • Recuento.
    • Cabinas de votación.
    • Autenticación.

    Gestión de la comunicación

    La comunicación se realizará a través de un grupo de Telegram conformado por todos los miembros del equipo. Las reuniones no presenciales se realizarán telemáticamente mediante Skype.

    Gestión del trabajo

    La gestión del trabajo y la asignación de tareas se llevará a cabo a través de Trello. Se crearán 4 tableros:

      * Tareas pendientes: en este tablero se añadirán las tareas que vayan surgiendo y que no estén asignadas ni realizadas aún.
      * Tareas en proceso: en este tablero estarán las tareas asignadas que estan en proceso de ejecución.
      * Tareas en revisión: en este tablero estarán las tareas acabadas para que sean revisadas antes de darlas por finalizadas.
      * Tareas realizadas: en este tablero estarán las tareas ya completadas.
    

    Gestión del código

    La gestión del código se realizará a través de GitHub.

    Tendremos un repositorio local en el cúal cada usuario creará una rama de desarrollo para realizar las modificaciones que considere necesarias en función de las tareas que les hayan sido asignadas, cuando finalicen sus respectivas tareas se realizara un merge desde las distintas ramas de desarrollo a la rama master. Adicionalmente, también contaremos con una rama de pruebas para testear el código completo antes de cada milestone. Una vez se haya comprobado el correcto funcionamiento del subsistema se realizará un push al repositorio oficial para integrarlo con los demás subsistemas.

    Formato de los commits

    Diferenciaremos los siguientes tipos de commits:

    * add: Una nueva caracteristica.
    * fix: Se soluciona un bug.
    * docs: Se realizaron cambios en la documentacion.
    * test: Se añadieron pruebas.
    

    Formato general de los commits:

    Título: Título del commit.
    Descripción: Tipo de funcionalidad y breve resumen.
    

    Gestión de incidencias

    Usaremos nuestro grupo de Telegram y nuestro tablero de Trello como gestor de incidencias internas y usaremos Github para el control de las incidencias externas.

    Formato general para detallar incidencias

    Las incidencias pueden emplearse no solo para fallos.

    Título: <breve título sobre la incidencia>
    Prioridad: a seleccionar entre distintos valores: urgente, alto, medio, bajo.
    Estado: pendiente, en curso, finalizado. Los dos primeros estados deberían meterse como etiquetas en GitHub, el último estado se prouduce cuando se cierra la incidencia en GitHub.
    Descripción: <descripción detallada del error>
      La descripción puede incluir imagenes o la salida emitida por el fallo.
    Etiquetas: <etiquetas de GitHub para clasificar las incidencias>
      enhancement: propuesta de mejora
      bug: fallos encontrados en el sistema
      help wanted: incidencia que puede ser resuelta por un miembro del equipo pero que ha sido atendida previamente por otro
      question: (a usar solo entre miembros del equipo) dudas sobre un commit en concreto, hay que referenciar el commit en cuestión
    

    Herramientas

    Tecnologías elegidas

    Subsistema: Almacenamiento de votos
    Lenguaje/Herramienta: Python 2.7; IDE: Pycharm Community 2017.3
    Sistema de gestión de bibliotecas: PIP
    Bibliotecas: 
       Flask: 0.12.2
       flask_restful: 0.3.6
       MySQLdb: 1.2.5
       requests: 2.18.4
       pycrypto: 2.6.1
    Base de datos:  MySQL Community Server 5.7.19
    

    Modelo de datos

    Los datos que se van a almacenar en nuestra base de datos son:

    - Tabla votos:

           - id: (int) identificador del voto [pk, autoincrementable]
           - token_usuario: (String) identificador del usuario que realiza el voto [fk, not null]
           - token_pregunta: (String) identificador de la pregunta a la que está respondiendo [fk, not null]
           - token_respuesta: (String) identificador de la respuesta [fk]
           - token_votacion: (String) identificador de la votacion [fk]
    
    • Los datos relativos a la votación los recibiremos cifrados, y para garantizar la anonimización de cada voto añadiremos una segunda capa de encriptación al token de las respuestas antes de almacenarlos.

    - Tabla tokens:

           - id: (int) identificador del token [pk, autoincrementable]
           - token_bd: (String) Token para autenticarse y acceder a nuestra BBDD
    

    API

    Las especificaciones de la API podrían variar posteriormente, ya que es posible que alguno los grupos de los que depende este módulo hicieran modificaciones en su modelo de datos a lo largo del desarrollo, lo cuál afectaría al formato de nuestra API.

    Dependencias

    Este módulo tiene dependencias con los siguientes subsistemas:

    • Autenticación: Necesitaremos obtener los datos de autenticación para que un usuario pueda verificar si su voto se registró correctamente,
    • Cabinas de votación: Necesitaremos recibir información de todas las cabinas de votaciones para poder almacenar los votos en nuestra base de datos.
    • Recuento: El módulo de recuento necesitará obtener todos los votos almacenados en nuestra base de datos para proceder a contabilizarlos.

    Comprobar voto

    URL:

      https://almacenamiento.nvotesus.es/api/get/comprobar_voto/{token_bd}/{token_usuario}/{token_votación}
    

    Descripción

    Se comprueba si un determinado usuario ha votado o no en esa votación.

    Petición HTTP

    GET

    Parámetros de petición:

       * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
       * token_usuario: Identificador del usuario (String)
       * token_votación: Identificador de la votación (String)
    

    Ejemplo de petición:

      https://almacenamiento.nvotesus.es/api/get/comprobar_voto/1/1/1
    

    Respuesta

    Nombre Tipo Descripción
    result JSON Objeto voto
    msg String 200 OK
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 401 NOT FOUND El usuario no ha realizado ningun voto en esta votacion.
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 401 UNAUTHORISED Token incorrecto.


    Ejemplo de respuesta

       {
          "1": {
              "id": "...",
              "token_usuario": "1",
              "token_pregunta": "...",
              "token_respuesta": "..."
          }
       }
    
       {
          "code": "404 NOT FOUND"
          "msg": "El usuario no ha realizado ningun voto en esta votacion."
       }
    
       {
          "code": "404 UNAUTHORISED"
          "msg": "Token incorrecto."
       }
    

    Comprobar voto pregunta

    URL:

      https://almacenamiento.nvotesus.es/api/get/comprobar_voto_pregunta/{token_bd}/{token_usuario}/{token_votación}/{token_pregunta}
    

    Descripción

    Se comprueba si un determinado usuario ha votado o no en una determinada pregunta de una votación.

    Petición HTTP

    GET

    Parámetros de petición:

       * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
       * token_usuario: Identificador del usuario (String)
       * token_votación: Identificador de la votación (String)
       * token_pregunta: Identificador de la pregunta (String)
    

    Ejemplo de petición:

      https://almacenamiento.nvotesus.es/api/get/comprobar_voto_pregunta/1/1/1/1
    

    Respuesta

    Nombre Tipo Descripción
    result JSON Objeto voto
    msg String 200 OK
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 404 NOT FOUND El usuario no ha realizado ningun voto en esta pregunta de esta votacion.
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 401 UNAUTHORISED Token incorrecto.


    Ejemplo de respuesta

       {
          "1": {
              "id":  "...",
              "token_usuario": "1",
              "token_pregunta": "1",
              "token_respuesta": "..."
          }
       }
    
       {
          "code": "401 NOT FOUND"
          "msg": "El usuario no ha realizado ningun voto en esta votacion."
       }
    
       {
          "code": "404 UNAUTHORISED"
          "msg": "Token incorrecto."
       }
    

    Almacenar voto

    URL:

      https://almacenamiento.nvotesus.es/api/post/almacenar_voto
    

    Parámetros de petición:

       * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
       * token_usuario: Identificador del usuario (String)
       * token_votacion: Identificador de la votación (String)
       * token_pregunta: Identificador de la pregunta (String)
       * token_respuesta: Identificador de la respuesta (String)
    

    Descripción

    Almacena el voto pedido en la base de datos.

    Petición HTTP

    POST

    Ejemplo de petición

       https://almacenamiento.nvotesus.es/api/post/almacenar_voto/
    

    Respuesta:

    Nombre Tipo Descripción
    result Boolean Código de éxito
    msg String 200 OK El voto se ha almacenado satisfactoriamente.
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 400 BAD REQUEST Un usuario sólo puede votar una vez a una pregunta.
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 401 UNAUTHORISED Token incorrecto.

    Ejemplo de respuesta:

       {
          "code": "200 OK"
          "message": "El voto se ha almacenado satisfactoriamente."
       }
    
       {
          "code": "400 BAD REQUEST"
          "message": "Un usuario sólo puede votar una vez a una pregunta."
       }
    
       {
          "code": "404 UNAUTHORISED"
          "msg": "Token incorrecto."
       }
    

    Almacenar voto múltiple

    URL:

      https://almacenamiento.nvotesus.es/api/post/almacenar_voto_multiple
    

    Parámetros de petición:

       * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
       * token_usuario: Identificador del usuario (String)
       * token_votacion: Identificador de la votación (String)
       * token_voto: Identificador del voto, es un array que contiene el token de la pregunta y el token de la respuesta (String)
    

    Descripción

    Almacena el voto pedido en la base de datos.

    Petición HTTP

    POST

    Ejemplo de petición

       https://almacenamiento.nvotesus.es/api/post/almacenar_voto_multiple/
    

    Respuesta:

    Nombre Tipo Descripción
    result Boolean Código de éxito
    msg String 200 OK El voto se ha almacenado satisfactoriamente.
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 400 BAD REQUEST Un usuario sólo puede votar una vez a una pregunta.
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 401 UNAUTHORISED Token incorrecto.

    Ejemplo de respuesta:

       {
          "code": "200 OK"
          "message": "El voto se ha almacenado satisfactoriamente."
       }
    
       {
          "code": "400 BAD REQUEST"
          "message": "Un usuario sólo puede votar una vez a una pregunta."
       }
    
       {
          "code": "404 UNAUTHORISED"
          "msg": "Token incorrecto."
       }
    

    Obtener votos

    URL:

      https://almacenamiento.nvotesus.es/api/get/obtener_todo/{token_bd}/{token_votacion}/{token_pregunta}
    

    Parámetros de petición:

       * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
       * token_votación: Identificador de la votación (String)
       * token_pregunta: Identificador de la pregunta (String)
    

    Descripción

    Obtener todos los votos de una pregunta en una determinada votación.

    Ejemplo de petición:

       https://almacenamiento.nvotesus.es/api/get/obtener_todo/1/1/1
    

    Respuesta:

    Nombre Tipo Descripción
    result JSON Objetos votos
    msg String 200 OK
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 404 NOT FOUND
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 401 UNAUTHORISED Token incorrecto.

    Ejemplo de respuesta

       {
          "1": {
              "id": "...",
              "token_usuario": "...",
              "token_pregunta": "...",
              "token_respuesta": "..."
          }
          "2": {
              "id": "...",
              "token_usuario": "...",
              "token_pregunta": "...",
              "token_respuesta": "..."
          }
       }
    
       {
          "code": "404 NOT FOUND"
          "message": "..."
       }
    
       {
          "code": "404 UNAUTHORISED"
          "msg": "Token incorrecto."
       }
    

    Obtener votos votación

    URL:

      https://almacenamiento.nvotesus.es/api/get/obtener_votos_votacion/{token_bd}/{token_votacion}
    

    Parámetros de petición:

       * token_bd: Token para verificar que el usuario que realiza la petición tiene permiso de acceso a nuestra base de datos (String)
       * token_votación: Identificador de la votación (String)
    

    Descripción

    Obtener todos los votos de una votación.

    Ejemplo de petición:

       https://almacenamiento.nvotesus.es/api/get/obtener_votos_votacion/1/1
    

    Respuesta:

    Nombre Tipo Descripción
    result JSON Objetos votos
    msg String 200 OK
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 404 NOT FOUND
    Nombre Tipo Descripción
    result Boolean Código de error
    msg String 401 UNAUTHORISED Token incorrecto.

    Ejemplo de respuesta

       {
          "1": {
              "id": "...",
              "token_usuario": "...",
              "token_pregunta": "...",
              "token_respuesta": "..."
          }
          "2": {
              "id": "...",
              "token_usuario": "...",
              "token_pregunta": "...",
              "token_respuesta": "..."
          }
       }
    
       {
          "code": "404 NOT FOUND"
          "message": "..."
       }
    
       {
          "code": "404 UNAUTHORISED"
          "msg": "Token incorrecto."
       }