This reverts commit 67f8eabb7a.
This commit is contained in:
parent
e6045f7287
commit
06fdc71ef2
1 changed files with 12 additions and 37 deletions
|
|
@ -313,7 +313,7 @@ public class WebClientStreamableHttpTransport implements McpClientTransport {
|
|||
|
||||
// The spec mentions only ACCEPTED, but the existing SDKs can return
|
||||
// 200 OK for notifications
|
||||
if (is2xx(response)) {
|
||||
if (response.statusCode().is2xxSuccessful()) {
|
||||
Optional<MediaType> contentType = response.headers().contentType();
|
||||
long contentLength = response.headers().contentLength().orElse(-1);
|
||||
// Existing SDKs consume notifications with no response body nor
|
||||
|
|
@ -397,15 +397,14 @@ public class WebClientStreamableHttpTransport implements McpClientTransport {
|
|||
}
|
||||
catch (IOException ex) {
|
||||
toPropagate = new McpTransportException("Sending request failed, " + e.getMessage(), e);
|
||||
logger.debug("Received content together with {} HTTP code response: {}", response.rawStatusCode(),
|
||||
body);
|
||||
logger.debug("Received content together with {} HTTP code response: {}", response.statusCode(), body);
|
||||
}
|
||||
|
||||
// Some implementations can return 400 when presented with a
|
||||
// session id that it doesn't know about, so we will
|
||||
// invalidate the session
|
||||
// https://github.com/modelcontextprotocol/typescript-sdk/issues/389
|
||||
if (isBadRequest(responseException)) {
|
||||
if (responseException.getStatusCode().isSameCodeAs(HttpStatus.BAD_REQUEST)) {
|
||||
if (!sessionRepresentation.equals(MISSING_SESSION_ID)) {
|
||||
return Mono.error(new McpTransportSessionNotFoundException(sessionRepresentation, toPropagate));
|
||||
}
|
||||
|
|
@ -425,8 +424,16 @@ public class WebClientStreamableHttpTransport implements McpClientTransport {
|
|||
return Flux.from(sessionStream.consumeSseStream(idWithMessages));
|
||||
}
|
||||
|
||||
private static boolean isNotFound(ClientResponse response) {
|
||||
return response.statusCode().isSameCodeAs(HttpStatus.NOT_FOUND);
|
||||
}
|
||||
|
||||
private static boolean isNotAllowed(ClientResponse response) {
|
||||
return response.statusCode().isSameCodeAs(HttpStatus.METHOD_NOT_ALLOWED);
|
||||
}
|
||||
|
||||
private static boolean isEventStream(ClientResponse response) {
|
||||
return is2xx(response) && response.headers().contentType().isPresent()
|
||||
return response.statusCode().is2xxSuccessful() && response.headers().contentType().isPresent()
|
||||
&& response.headers().contentType().get().isCompatibleWith(MediaType.TEXT_EVENT_STREAM);
|
||||
}
|
||||
|
||||
|
|
@ -605,36 +612,4 @@ public class WebClientStreamableHttpTransport implements McpClientTransport {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Needed for Spring 5 compatibility
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
private static boolean isBadRequest(final WebClientResponseException responseException) {
|
||||
return responseException.getRawStatusCode() == HttpStatus.BAD_REQUEST.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* Needed for Spring 5 compatibility
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
private static boolean isNotFound(ClientResponse response) {
|
||||
return response.rawStatusCode() == HttpStatus.NOT_FOUND.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* Needed for Spring 5 compatibility
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
private static boolean isNotAllowed(ClientResponse response) {
|
||||
return response.rawStatusCode() == HttpStatus.METHOD_NOT_ALLOWED.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* Needed for Spring 5 compatibility
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
private static boolean is2xx(final ClientResponse response) {
|
||||
return response.rawStatusCode() >= 200 && response.rawStatusCode() < 300;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue