package com.airlock.iam.flow.domain.model.result;

import com.airlock.iam.base.api.domain.model.mapification.MapifiedValues;
import com.airlock.iam.base.misc.log.LogUtil;
import com.airlock.iam.flow.api.domain.model.step.StepResultData;
import java.util.Map;

public record NotAuthorizedData(String wwwAuthenticate) implements StepResultData {
   private static final String WWW_AUTHENTICATE_KEY = "wwwAuth";

   public static NotAuthorizedData basicAuthentication(String realm) {
      return new NotAuthorizedData("Basic realm=" + LogUtil.quote(realm));
   }

   public static NotAuthorizedData negotiate() {
      return new NotAuthorizedData("Negotiate");
   }

   public static NotAuthorizedData negotiate(String data) {
      return new NotAuthorizedData("Negotiate " + data);
   }

   @Override
   public MapifiedValues mapify() {
      return new MapifiedValues(Map.of("wwwAuth", this.wwwAuthenticate()));
   }

   public static NotAuthorizedData demapify(MapifiedValues values) {
      return new NotAuthorizedData(values.get("wwwAuth"));
   }
}
