package com.airlock.iam.authentication.infrastructure.service.basicauth;

import com.airlock.iam.authentication.domain.model.password.BasicAuthExtractor;
import com.airlock.iam.common.domain.service.credential.HttpBasicAuthExtractor;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import jakarta.servlet.http.HttpServletRequest;
import java.nio.charset.Charset;
import java.util.Optional;

public final class BasicAuthExtractorImpl implements BasicAuthExtractor {
   private final Provider<HttpServletRequest> request;

   @Inject
   public BasicAuthExtractorImpl(Provider<HttpServletRequest> request) {
      this.request = request;
   }

   @Override
   public Optional<HttpBasicAuthExtractor.BasicAuthHeader> extractBasicAuthHeader(Charset encoding) {
      return HttpBasicAuthExtractor.extractBasicAuthHeader(Optional.ofNullable(((HttpServletRequest)this.request.get()).getHeader("Authorization")), encoding);
   }
}
