package com.airlock.iam.flow.infrastructure;

import com.airlock.iam.flow.application.service.session.FlowContinuationChecker;
import com.airlock.iam.flow.domain.model.session.NoFlowToContinueException;
import jakarta.inject.Inject;
import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;

public class FlowContinuationCheckerImpl implements FlowContinuationChecker {
   private static final String CONTINUE_HEADER = "X-Continue-Flow";
   private final HttpServletRequest request;

   @Inject
   public FlowContinuationCheckerImpl(HttpServletRequest request) {
      this.request = request;
   }

   @Override
   public void ensureFlowStartAllowed() {
      String continueHeader = this.request.getHeader("X-Continue-Flow");
      if (StringUtils.isNotBlank(continueHeader)) {
         throw new NoFlowToContinueException("Expected flow to continue, cannot start new flow");
      }
   }
}
