package com.airlock.iam.login.domain.model.targetapp;

import com.airlock.iam.base.api.domain.model.mapification.MapifiedValues;
import com.airlock.iam.flow.api.domain.model.session.MultiFlowScopedFlowAttribute;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.net.URI;
import java.util.Map;

public final class TargetApplicationAccessForwardURI implements MultiFlowScopedFlowAttribute<TargetApplicationAccessForwardURI> {
   private static final String URI_KEY = "uri";
   private final URI unverifiedForwardUri;

   public static TargetApplicationAccessForwardURI targetApplicationAccessForwardURI(URI location) {
      return new TargetApplicationAccessForwardURI(location);
   }

   public URI getUnverifiedForwardUri() {
      return this.unverifiedForwardUri;
   }

   public TargetApplicationAccessForwardURI mergeWith(TargetApplicationAccessForwardURI newAttribute) {
      return newAttribute;
   }

   @Override
   public MapifiedValues mapify() {
      return new MapifiedValues(Map.of("uri", this.unverifiedForwardUri.toASCIIString()));
   }

   public static TargetApplicationAccessForwardURI demapify(MapifiedValues values) {
      return new TargetApplicationAccessForwardURI(URI.create(values.get("uri")));
   }

   @SuppressFBWarnings(justification = "generated code")
   private TargetApplicationAccessForwardURI(URI unverifiedForwardUri) {
      this.unverifiedForwardUri = unverifiedForwardUri;
   }
}
