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.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;
import com.google.inject.servlet.RequestScoped;
import jakarta.servlet.http.HttpServletRequest;

public final class RequestEventMetadataModule extends PrivateModule {
   @Provides
   @RequestScoped
   @Exposed
   EventMetadata provide(RequestIpAddressEventMetadataFactory requestIpFactory, UserAgentEventMetadataFactory userAgentFactory, HttpServletRequest request) {
      return EventMetadataImpl.eventMetadata().putAll(userAgentFactory.metadata(request)).putAll(requestIpFactory.metadata(request));
   }

   protected void configure() {
   }
}
