From 32997b7c31fc3b27a8df6911e0f8e8e1bcc58437 Mon Sep 17 00:00:00 2001
From: Jakub Malinowski <jakub@malinowski.net.pl>
Date: Wed, 30 Oct 2024 09:05:21 +0000
Subject: [PATCH] #129 Client session note service ticket fix

---
 src/main/java/org/keycloak/protocol/cas/utils/ContentTypeHelper.java |   29 +++++++++++------------------
 1 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/src/main/java/org/keycloak/protocol/cas/utils/ContentTypeHelper.java b/src/main/java/org/keycloak/protocol/cas/utils/ContentTypeHelper.java
index b5ad8a5..f74b9f5 100644
--- a/src/main/java/org/keycloak/protocol/cas/utils/ContentTypeHelper.java
+++ b/src/main/java/org/keycloak/protocol/cas/utils/ContentTypeHelper.java
@@ -1,34 +1,27 @@
 package org.keycloak.protocol.cas.utils;
 
-import org.jboss.resteasy.spi.HttpRequest;
+import jakarta.ws.rs.core.*;
 import org.keycloak.protocol.cas.CASLoginProtocol;
-
-import javax.ws.rs.BadRequestException;
-import javax.ws.rs.core.*;
+import org.keycloak.protocol.cas.representations.CASErrorCode;
 
 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;
+    public ContentTypeHelper(UriInfo uriInfo) {
         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());
+            if (format.equalsIgnoreCase("json")) {
+                return MediaType.APPLICATION_JSON_TYPE;
+            } else if (format.equalsIgnoreCase("xml")) {
+                return MediaType.APPLICATION_XML_TYPE;
+            } else {
+                throw new CASValidationException(CASErrorCode.INVALID_REQUEST, "Unsupported value of parameter " + CASLoginProtocol.FORMAT_PARAM, Response.Status.BAD_REQUEST);
+            }
         }
-        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;
-        }
+        return MediaType.APPLICATION_XML_TYPE;
     }
 }

--
Gitblit v1.9.1