Archivo historico de la wiki de EGC

Contenido archivado y de solo lectura, importado de la wiki original en julio de 2026. Puede contener enlaces rotos y material obsoleto.

Grupo Almacenamiento de votos(2014-15)

Descripción

Una base de datos de votos cifrados. Se almacenarán los votos sin información alguna del votante. Antes de añadir un nuevo voto a la base de datos, el almacenamiento tiene que verificar que el voto viene de un votante válido, por lo que deberá consultar al sistema de autenticación. Una vez almacenado el voto, debe notificar al sistema de autenticación que el usuario ya ha votado. Con el fin de llevar esto a cabo se tendrá una base de datos MySQL y se dispondrá de una interfaz en Java con la que acceder a ella para almacenar votos y para obtenerlos.

Historias de usuario: Como votante deseo almacenar mi voto con el fin de que quede almacenado de forma permanente y no sea susceptible a perderse.

Requisitos de información: Votos que almacenar

Miembros

Iteraciones

Prácticas

Subsistemas relacionados

Recomendación de integración con nuestro subsistema

Se ofrece un método para python que recibe un voto que será una cadena codificada y votacion_id que será el número de id de la votación. El método devolverá True si la operación ha tenido éxito y False en caso contrario.

import urllib2,urllib,json


def vote(voto,votacion_id):
    data=[('vote',voto),('votation_id',votacion_id)]
    data=urllib.urlencode(data)
    path='http://php-egc.rhcloud.com/vote.php'
    req=urllib2.Request(path,data)
    response=urllib2.urlopen(req)
    response_data = json.load(response)
    result = False
    if response_data['msg']==u'1':
        result=True
    return result

Se ofrece un método en java que devuelve una lista de String con todos los votos de una votación. Para ello son necesarias las librerías org.json-20120521.jar y json-simple-1.1.1.jar

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;

import org.json.JSONException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class Votos {

    public static List<String> getVotos(int votation_id) throws ParseException,IOException, JSONException {
        List<String> votos = new ArrayList<String>();
        String url = "http://php-egc.rhcloud.com/get_votes.php?votation_id=" + votation_id;
        JSONObject jsonObject = readJsonFromUrl(url);
        JSONArray votes = (JSONArray) jsonObject.get("votes");
        for (int i = 0; i < votes.size(); i++) {
            votos.add((String) votes.get(i));
        }
        return votos;
    }

    private static JSONObject readJsonFromUrl(String url) throws IOException,
            JSONException, ParseException {
        JSONParser jsonParser = new JSONParser();
        InputStream is = new URL(url).openStream();
        try {
            BufferedReader rd = new BufferedReader(new InputStreamReader(is,
                    Charset.forName("UTF-8")));
            String jsonText = readAll(rd);
            JSONObject json = (JSONObject) jsonParser.parse(jsonText);
            return json;
        } finally {
            is.close();
        }
    }

    private static String readAll(Reader rd) throws IOException {
        StringBuilder sb = new StringBuilder();
        int cp;
        while ((cp = rd.read()) != -1) {
            sb.append((char) cp);
        }
        return sb.toString();
    }
}

Alternativa de integración - API

Método (URL)

Tipo

Descripción

Parámetros

Respuesta

Ejemplo

vote (http://php-egc.rhcloud.com/vote.php)

POST

Permite almacenar un voto para una determinada votación

  • vote: voto codificado
  • votation_id: id de la votación

Json con un mensaje de respuesta que indica si la operación se ha resuelto correctamente. (el mensaje será 1 si todo salió bien y 0 en caso contrario)

{"msg":1}

get_votes (http://php-egc.rhcloud.com/get_votes.php)

GET

Devuelve la lista de votos de una determinada votación

  • votation_id: id de la votación.

Json con la lista de votos y un campo "msg" que indica si la operación se realizó correctamente.

{"votes":["voto1","voto2"],"msg":1}