package eu.dnetlib.statsapi.repositories;

import eu.dnetlib.statsapi.domain.Result;

import org.apache.log4j.Logger;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Repository;

import java.security.MessageDigest;

@Repository
public class StatsRepository {

    private RedisTemplate<String, String> redisTemplate;

    private HashOperations<String, String, String> jedis;

    private final Logger log = Logger.getLogger(this.getClass());

    public StatsRepository(RedisTemplate<String, String> redisTemplate) {
        this.redisTemplate = redisTemplate;
        this.jedis = this.redisTemplate.opsForHash();
    }

    private static String MD5(String string) throws java.security.NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(string.getBytes());

        byte byteData[] = md.digest();
        StringBuilder sb = new StringBuilder();
        for (byte aByteData : byteData) {
            sb.append(Integer.toString((aByteData & 0xff) + 0x100, 16).substring(1));
        }

        return sb.toString();
    }

    public Result getNumber(String number) {
        String redis_result = jedis.get("STATS_NUMBERS", number);
        if (redis_result != null) {
            return new Result("OK", "200", Integer.parseInt(redis_result.replaceAll(",", "")));
        }
        return new Result("Not Found", "400", null);
    }
}
