make schema models and methods more defensive

This commit is contained in:
timurgordon
2025-01-03 01:41:42 -05:00
parent ff8ee3693c
commit d49e94e412
3 changed files with 59 additions and 48 deletions

View File

@@ -8,7 +8,7 @@ pub struct Request {
pub mut:
jsonrpc string @[required] // JSON-RPC version, e.g., "2.0"
method string @[required] // Method to invoke
params string @[required] // JSON-encoded parameters
params string // JSON-encoded parameters
id string @[required] // Unique request ID
}
@@ -32,12 +32,23 @@ pub fn (req Request) encode() string {
return json2.encode(req)
}
// Validates that the response does not contain both `result` and `error`.
pub fn (req Request) validate() ! {
if req.jsonrpc == '' {
return error('request jsonrpc version not specified')
} else if req.id == '' {
return error('request id is empty')
} else if req.method == '' {
return error('request method is empty')
}
}
// A generic JSON-RPC request struct allowing strongly-typed parameters.
pub struct RequestGeneric[T] {
pub mut:
jsonrpc string @[required]
method string @[required]
params T @[required]
params T
id string @[required]
}