package com.airlock.iam.authentication.infrastructure.idpropagation;

import com.airlock.iam.authentication.api.domain.model.idpropagation.ResponseAdder;
import com.airlock.iam.authentication.application.configuration.idpropagation.ResponseHeaderTicketAdderConfig;
import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.base.misc.log.LogUtil;
import com.airlock.iam.log.api.signing.SigningLogger;
import jakarta.inject.Inject;
import jakarta.servlet.http.HttpServletResponse;

@LogicForConfig(ResponseHeaderTicketAdderConfig.class)
public final class ResponseHeaderTicketAdder implements ResponseAdder {
   private final ResponseHeaderTicketAdderConfig config;
   private final HttpServletResponse response;
   private final SigningLogger signingLogger;

   @Inject
   public ResponseHeaderTicketAdder(ResponseHeaderTicketAdderConfig config, HttpServletResponse response, SigningLogger signingLogger) {
      this.config = config;
      this.response = response;
      this.signingLogger = signingLogger;
   }

   @Override
   public void addToResponse(String content) {
      this.response.addHeader(this.config.getHeaderName(), content);
      this.signingLogger.log("Added ticket header with name " + LogUtil.quote(this.config.getHeaderName()) + " to response");
   }
}
