<commit_before>package br.edu.ufcg.computacao.si1.util;


import io.jsonwebtoken.*;
import io.jsonwebtoken.impl.crypto.MacProvider;

import java.security.Key;
import java.util.*;

/**
 * Created by luiz on 09/03/17.
 */
public class TokenCodificadorDecodificador {

    private Set<Key> chavesDeAcessso;

    public TokenCodificadorDecodificador() {
        this.chavesDeAcessso = new HashSet<Key>();
    }

    public String criarToken(String idUsuario) {

        Key key = MacProvider.generateKey(SignatureAlgorithm.HS512);
        this.chavesDeAcessso.add(key);

        String token = Jwts.builder().setId(idUsuario)
                .signWith(SignatureAlgorithm.HS512, key)
                .compact();

        return token;
    }

    public boolean tokenValido(String token) {

        try {

            Jwts.parser().setSigningKey("default").parseClaimsJws(token);

        } catch (SignatureException e) {
        } catch (MalformedJwtException e) {
            return false;
        }

        return true;
    }

    /**
     * Mudar Exceção para uma mais específica
     */
    public int decodificarToken(String token) throws Exception {

        if (! tokenValido(token)) {
            throw new Exception("Token inválido!");
        }

        Iterator<Key> chavesDeAcesso = this.chavesDeAcessso.iterator();
        Claims claims = null;

        while (chavesDeAcesso.hasNext()) {

            Key chave = chavesDeAcesso.next();

            try {
                claims = Jwts.parser().setSigningKey(chave).parseClaimsJws(token).getBody();
            } catch (SignatureException e) {
            }
        }

        if (claims != null) {
            int id = Integer.parseInt(claims.getId());
            return id;

        } else
            throw new Exception("Token inválido!");
    }
}<commit_msg>Modificando classe token para deixar métodos mais enchutos<commit_after>package br.edu.ufcg.computacao.si1.util;


import io.jsonwebtoken.*;
import io.jsonwebtoken.impl.crypto.MacProvider;

import java.security.Key;
import java.util.*;

/**
 * Created by luiz on 09/03/17.
 */
public class TokenCodificadorDecodificador {

    private Map<String, Key> chavesDeAcessso;

    public TokenCodificadorDecodificador() {
        this.chavesDeAcessso = new HashMap<>();
    }

    public String criarToken(Long idUsuario) {

        String idUsr = String.valueOf(idUsuario);
        Key key = MacProvider.generateKey(SignatureAlgorithm.HS512);

        String token = Jwts.builder().setId(idUsr)
                .signWith(SignatureAlgorithm.HS512, key)
                .compact();

        this.chavesDeAcessso.put(token, key);

        return token;
    }

    public boolean tokenValido(String token) {
        return this.chavesDeAcessso.containsKey(token);
    }

    /**
     * Mudar Exceção para uma mais específica
     */
    public long decodificarToken(String token) throws Exception {

        Claims claims = null;

        if (tokenValido(token)) {
            Key chave = this.chavesDeAcessso.get(token);
            claims = Jwts.parser().setSigningKey(chave).parseClaimsJws(token).getBody();
        }

        if (claims != null) {
            long id = Long.parseLong(claims.getId());
            return id;

        } else
            throw new Exception("Token inválido!");
    }

    public void removerToken(String token) {

        if (tokenValido(token)) {
            this.chavesDeAcessso.remove(token);
        }

    }
}
{'fraction_non_alphanumeric': 0.10626624314178458, 'fraction_numerical': 0.007507941091539128, 'mean_word_length': 2.2834123222748817, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6205992', 'n_tokens_mistral': 1105, 'n_tokens_neox': 1040, 'n_words': 208}