package com.airlock.iam.ssi.domain.model.step;

import com.airlock.iam.core.misc.util.ImageUtils;
import com.airlock.iam.core.misc.util.qrcode.QrCodeUtilities;
import com.airlock.iam.flow.api.domain.model.step.StepResult;
import com.airlock.iam.flow.api.domain.model.step.StepResultBuilder;
import java.awt.image.BufferedImage;
import java.net.URI;

public final class SsiUtils {
   public static final String CUSTOMIZATION_INFO_DOCUMENTATION = "<p>The authentication step, passwordless authentication step, and verification step all use the same UI. If translations need to differentiate between them,\n use <a href='https://docs.airlock.com/iam/latest/index/1642782415579.html'>customization with the design kit</a>.</p>";
   public static final String INCUBATING_INFO_DOCUMENTATION = "<p><b>This feature is incubating. Please consult the documentation for more information.</b></p>";

   private SsiUtils() {
   }

   public static String generateQrAsString(String invitationLink) {
      BufferedImage invitationQrCode = QrCodeUtilities.createQrCodeImage(invitationLink, 256, 256);
      return ImageUtils.imageAsString(invitationQrCode, ImageUtils.ImageFormat.PNG);
   }

   public static <T extends StepResult> T addInvitationAttributes(StepResultBuilder result, URI invitationLink, String invitationQrCodeString) {
      return (T)result.addAdditionalAttribute("invitationLink", invitationLink.toASCIIString())
         .addAdditionalAttribute("invitationQrCode", invitationQrCodeString)
         .build();
   }
}
