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.RequestHeaderTicketAdderConfig;
import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.common.application.service.session.AirlockControlCookieService;
import jakarta.inject.Inject;

@LogicForConfig(RequestHeaderTicketAdderConfig.class)
public final class RequestHeaderTicketAdder implements ResponseAdder {
   private final RequestHeaderTicketAdderConfig config;
   private final AirlockControlCookieService controlCookieService;

   @Inject
   public RequestHeaderTicketAdder(RequestHeaderTicketAdderConfig config, AirlockControlCookieService controlCookieService) {
      this.config = config;
      this.controlCookieService = controlCookieService;
   }

   @Override
   public void addToResponse(String content) {
      this.controlCookieService.addRequestHeader(this.config.getHeaderName(), this.collateContent(content), this.config.getMappingNames());
   }

   private String collateContent(String content) {
      String contentPrefix = this.config.getContentPrefix();
      return contentPrefix == null ? content : contentPrefix + " " + content;
   }
}
