package com.airlock.iam.common.infrastructure.factory;

import com.airlock.iam.base.api.domain.model.event.metadata.EventMetadata;
import com.airlock.iam.base.domain.model.event.EventMetadataImpl;
import com.airlock.iam.base.infrastructure.event.RequestEventMetadataFactory;
import com.airlock.iam.common.domain.model.event.UserAgentRequestHeaderEventMetadataItem;
import jakarta.inject.Inject;
import jakarta.servlet.http.HttpServletRequest;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;

public class UserAgentEventMetadataFactory implements RequestEventMetadataFactory {
   @Inject
   UserAgentEventMetadataFactory() {
   }

   @Override
   public EventMetadata metadata(HttpServletRequest request) {
      return EventMetadataImpl.eventMetadata().maybePut(this.userAgent(request));
   }

   private Optional<UserAgentRequestHeaderEventMetadataItem> userAgent(HttpServletRequest request) {
      return Optional.ofNullable(request.getHeader("User-Agent"))
         .filter(StringUtils::isNotBlank)
         .map(UserAgentRequestHeaderEventMetadataItem::userAgentMetadata);
   }
}
