package itn.com.cmm.captcha;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import nl.captcha.Captcha;
import nl.captcha.audio.AudioCaptcha;
import nl.captcha.audio.producer.VoiceProducer;
import nl.captcha.backgrounds.GradiatedBackgroundProducer;
import nl.captcha.servlet.CaptchaServletUtil;
import nl.captcha.text.producer.NumbersAnswerProducer;

public class CaptchaUtil {
	 public CaptchaUtil() {
	        
	    }
	    public void captchaImg(HttpServletRequest request, HttpServletResponse response){
	        Captcha captcha = new Captcha.Builder(200,  60)
	        .addText(new NumbersAnswerProducer(6))
	        .addNoise().addNoise().addNoise()
	        .addBackground(new GradiatedBackgroundProducer())
	        .addBorder()
	        .build();
	        
	        response.setHeader("Cache-Control", "no-cache");
	        response.setDateHeader("Expires", 0);
	        response.setHeader("Pragma", "no-cache");
	        response.setDateHeader("Max-Age", 0);
	        response.setContentType("image/png");
	        
	        CaptchaServletUtil.writeImage(response,  captcha.getImage());;
	        request.getSession().setAttribute("captcha", captcha.getAnswer());
	    }
	    
	    public void captchaAudio(HttpServletRequest request, HttpServletResponse response){
	        String getAnswer = (String) request.getSession().getAttribute("captcha");
	        VoiceProducer vProd = new SetKorVoiceProducer(); //한글 음성을 생성해주는 객체 생성
	        
	      /*  AudioCaptcha ac = new AudioCaptcha.Builder()
	        .addAnswer(new SetTextProducer(getAnswer))
	        .addVoice()
	        .addNoise()
	        .build();*/
	        
	        AudioCaptcha ac = new AudioCaptcha.Builder()
	        .addAnswer(new SetTextProducer(getAnswer))
	        .addVoice(vProd)
	        .addNoise()
	        .build() ;
	    	        
	        response.setHeader("Cache-Control", "no-cache");
	        response.setDateHeader("Expires", 0);
	        response.setHeader("Pragma", "no-cache");
	        response.setDateHeader("Max-Age", 0);
	    
	        CaptchaServletUtil.writeAudio(response,  ac.getChallenge());;
	        request.getSession().setAttribute("captcha", ac.getAnswer());
	    }
}
