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

import com.google.common.base.Preconditions;
import com.google.common.collect.Iterables;
import jakarta.ws.rs.core.PathSegment;
import java.util.List;
import java.util.Optional;
import org.glassfish.jersey.server.ExtendedUriInfo;

public final class UriSegmentExtractor {
   private UriSegmentExtractor() {
   }

   public static Optional<String> extractSegmentWithId(String segmentId, ExtendedUriInfo extendedUriInfo) {
      List<PathSegment> segments = extendedUriInfo.getPathSegments(segmentId, true);
      if (segments.isEmpty()) {
         return Optional.empty();
      }

      Preconditions.checkState(segments.size() == 1, "URI contains more than one path parameter with id " + segmentId);
      PathSegment segment = (PathSegment)Iterables.getOnlyElement(segments);
      return Optional.of(segment.getPath());
   }
}
