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

import com.airlock.iam.common.api.domain.model.request.RequestAttributes;
import com.airlock.iam.common.domain.model.geolocation.GeolocationProvider;
import com.airlock.iam.common.domain.model.request.ClientIp;
import com.airlock.iam.common.infrastructure.request.RequestAttributeExtractor;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;
import jakarta.servlet.http.HttpServletRequest;
import java.util.Optional;

public final class RequestAttributesModule extends PrivateModule {
   @Exposed
   @Provides
   RequestAttributes provideRequestAttributes(ClientIp clientIp, HttpServletRequest request, Optional<GeolocationProvider> geolocationProvider) {
      return new RequestAttributeExtractor().extractRequestAttributes(request, clientIp.getIp(), geolocationProvider);
   }

   protected void configure() {
   }
}
