package utils

import (
	"fmt"
	"github.com/mojocn/base64Captcha"
	"time"
)

const CAPTCHA = "captcha:"

type RedisStore struct {
	base64Captcha.Store
}

var redisObj = new(RedisClient)

//set a capt
func (r RedisStore) Set(id string, value string) error {
	key := CAPTCHA + id
	client := redisObj.GetClient()
	_, err := client.Set(key, value, time.Minute*2).Result()
	if err != nil {
		return err
	}
	redisObj.CloseClient(client)
	return nil
}

//get a capt
func (r RedisStore) Get(id string, clear bool) string {
	key := CAPTCHA + id
	client := redisObj.GetClient()
	val, err := client.Get(key).Result()
	if err != nil {
		fmt.Println(err)
		return ""
	}
	if clear {
		client.Del(key)
	}
	redisObj.CloseClient(client)
	return val
}

//verify a capt
func (r RedisStore) Verify(id, answer string, clear bool) bool {
	v := RedisStore{}.Get(id, clear)
	fmt.Println("key:" + id + ";value:" + v + ";answer:" + answer)
	return v == answer
}

//get a capt
func (r RedisStore) Has(id string) int {
	key := CAPTCHA + id
	client := redisObj.GetClient()
	val, err := client.Get(key).Result()
	redisObj.CloseClient(client)
	if err != nil {
		fmt.Println(err)
		return 0
	}
	if val == "" {
		return 0
	}
	return 1
}