Do not fail on invalid Accept header
| | |
| | | package org.keycloak.protocol.cas.utils; |
| | | |
| | | import org.jboss.resteasy.spi.BadRequestException; |
| | | import org.jboss.resteasy.spi.HttpRequest; |
| | | import org.keycloak.protocol.cas.CASLoginProtocol; |
| | | |
| | |
| | | //if parameter is set, it overrides all header values (see spec section 2.5.1) |
| | | request.getMutableHeaders().putSingle(HttpHeaders.ACCEPT, "application/" + format.toLowerCase()); |
| | | } |
| | | Variant variant = restRequest.selectVariant(Variant.mediaTypes(MediaType.APPLICATION_XML_TYPE, MediaType.APPLICATION_JSON_TYPE).build()); |
| | | return variant == null ? MediaType.APPLICATION_XML_TYPE : variant.getMediaType(); |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | |
| | | assertEquals(MediaType.APPLICATION_XML_TYPE, get("http://example.com/?format=xml", MediaType.APPLICATION_JSON).selectResponseType()); |
| | | |
| | | assertEquals(MediaType.APPLICATION_XML_TYPE, get("http://example.com/", MediaType.TEXT_PLAIN).selectResponseType()); |
| | | assertEquals(MediaType.APPLICATION_XML_TYPE, get("http://example.com/", "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2").selectResponseType()); |
| | | } |
| | | |
| | | private ContentTypeHelper get(String uri, String acceptHeader) throws Exception { |