package com.airlock.iam.flow.shared.domain.model.captcha;

import com.airlock.iam.base.api.domain.model.validation.ValidationResult;
import com.airlock.iam.flow.shared.api.domain.model.captcha.CaptchaProvider;
import com.airlock.iam.flow.shared.domain.service.captcha.CaptchaValidationService;
import jakarta.inject.Provider;

public abstract class ReCaptchaBasedProvider implements CaptchaProvider {
   private final Provider<CaptchaCredentials> credentials;
   private final Provider<CaptchaValidationService> validator;

   public ReCaptchaBasedProvider(Provider<CaptchaCredentials> credentials, Provider<CaptchaValidationService> validator) {
      this.credentials = credentials;
      this.validator = validator;
   }

   @Override
   public ValidationResult validateAnswer(String answer) {
      return ((CaptchaValidationService)this.validator.get()).validateToken(((CaptchaCredentials)this.credentials.get()).getSecretKey(), answer);
   }

   protected String getKey() {
      return ((CaptchaCredentials)this.credentials.get()).getSiteKey();
   }
}
