[codex][app-server] improve error response for client requests (#6050)
This commit is contained in:
@@ -64,9 +64,32 @@ impl MessageProcessor {
|
|||||||
|
|
||||||
pub(crate) async fn process_request(&mut self, request: JSONRPCRequest) {
|
pub(crate) async fn process_request(&mut self, request: JSONRPCRequest) {
|
||||||
let request_id = request.id.clone();
|
let request_id = request.id.clone();
|
||||||
if let Ok(request_json) = serde_json::to_value(request)
|
let request_json = match serde_json::to_value(&request) {
|
||||||
&& let Ok(codex_request) = serde_json::from_value::<ClientRequest>(request_json)
|
Ok(request_json) => request_json,
|
||||||
{
|
Err(err) => {
|
||||||
|
let error = JSONRPCErrorError {
|
||||||
|
code: INVALID_REQUEST_ERROR_CODE,
|
||||||
|
message: format!("Invalid request: {err}"),
|
||||||
|
data: None,
|
||||||
|
};
|
||||||
|
self.outgoing.send_error(request_id, error).await;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let codex_request = match serde_json::from_value::<ClientRequest>(request_json) {
|
||||||
|
Ok(codex_request) => codex_request,
|
||||||
|
Err(err) => {
|
||||||
|
let error = JSONRPCErrorError {
|
||||||
|
code: INVALID_REQUEST_ERROR_CODE,
|
||||||
|
message: format!("Invalid request: {err}"),
|
||||||
|
data: None,
|
||||||
|
};
|
||||||
|
self.outgoing.send_error(request_id, error).await;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
match codex_request {
|
match codex_request {
|
||||||
// Handle Initialize internally so CodexMessageProcessor does not have to concern
|
// Handle Initialize internally so CodexMessageProcessor does not have to concern
|
||||||
// itself with the `initialized` bool.
|
// itself with the `initialized` bool.
|
||||||
@@ -114,14 +137,6 @@ impl MessageProcessor {
|
|||||||
self.codex_message_processor
|
self.codex_message_processor
|
||||||
.process_request(codex_request)
|
.process_request(codex_request)
|
||||||
.await;
|
.await;
|
||||||
} else {
|
|
||||||
let error = JSONRPCErrorError {
|
|
||||||
code: INVALID_REQUEST_ERROR_CODE,
|
|
||||||
message: "Invalid request".to_string(),
|
|
||||||
data: None,
|
|
||||||
};
|
|
||||||
self.outgoing.send_error(request_id, error).await;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) async fn process_notification(&self, notification: JSONRPCNotification) {
|
pub(crate) async fn process_notification(&self, notification: JSONRPCNotification) {
|
||||||
|
|||||||
Reference in New Issue
Block a user