HeaderExtractor.java

package se.jobtechdev.personaldatagateway.api.util;

import java.util.AbstractMap;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;

public final class HeaderExtractor {
  private HeaderExtractor() {
  }

  public static Map<String, String> extractHeader(String headerString) {
    if (headerString == null) {
      return new LinkedHashMap<>();
    }
    final var headerValues = headerString.split("&");
    final var entries =
        Arrays.stream(headerValues)
            .filter(h -> h.contains("="))
            .map(
                h -> {
                  final var kv = h.split("=");
                  return new AbstractMap.SimpleEntry<>(kv[0], kv[1]);
                })
            .toList();
    final var map = new LinkedHashMap<String, String>();
    for (Map.Entry<String, String> entry : entries) {
      map.put(entry.getKey(), entry.getValue());
    }
    return map;
  }
}