package com.airlock.iam.admin.infrastructure.mapper.prot;

import com.airlock.iam.admin.infrastructure.transfer.response.user.tokens.MtanTokenOtpData;
import com.airlock.iam.common.domain.model.otp.OneTimePasswordVerificationContext;
import java.util.Date;
import ma.glasnost.orika.CustomConverter;
import ma.glasnost.orika.MappingContext;
import ma.glasnost.orika.metadata.Type;
import org.apache.commons.codec.binary.Base64;

class VerificationContextToMtanTokenOtpDataConverter extends CustomConverter<OneTimePasswordVerificationContext, MtanTokenOtpData> {
   public MtanTokenOtpData convert(OneTimePasswordVerificationContext source, Type<? extends MtanTokenOtpData> destinationType, MappingContext mappingContext) {
      String base64Hash = Base64.encodeBase64String(source.getHash());
      Date expirationDate = source.getExpirationTime();
      return new MtanTokenOtpData(base64Hash + (expirationDate == null ? "" : "|" + expirationDate.getTime()));
   }
}
