package org.keycloak.protocol.cas.utils; 
 | 
  
 | 
import jakarta.ws.rs.BadRequestException; 
 | 
import jakarta.ws.rs.core.*; 
 | 
import org.jboss.resteasy.spi.HttpRequest; 
 | 
import org.keycloak.protocol.cas.CASLoginProtocol; 
 | 
  
 | 
public class ContentTypeHelper { 
 | 
    private final HttpRequest request; 
 | 
    private final Request restRequest; 
 | 
    private final UriInfo uriInfo; 
 | 
  
 | 
    public ContentTypeHelper(HttpRequest request, Request restRequest, UriInfo uriInfo) { 
 | 
        this.request = request; 
 | 
        this.restRequest = restRequest; 
 | 
        this.uriInfo = uriInfo; 
 | 
    } 
 | 
  
 | 
    public MediaType selectResponseType() { 
 | 
        String format = uriInfo.getQueryParameters().getFirst(CASLoginProtocol.FORMAT_PARAM); 
 | 
        if (format != null && !format.isEmpty()) { 
 | 
            //if parameter is set, it overrides all header values (see spec section 2.5.1) 
 | 
            request.getMutableHeaders().putSingle(HttpHeaders.ACCEPT, "application/" + format.toLowerCase()); 
 | 
        } 
 | 
        try { 
 | 
            Variant variant = restRequest.selectVariant(Variant.mediaTypes(MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_JSON_TYPE).build()); 
 | 
            return variant == null ? MediaType.APPLICATION_XML_TYPE : variant.getMediaType(); 
 | 
        } catch (BadRequestException e) { 
 | 
            //the default Accept header set by java.net.HttpURLConnection is invalid (cf. RESTEASY-960) 
 | 
            return MediaType.APPLICATION_XML_TYPE; 
 | 
        } 
 | 
    } 
 | 
} 
 |