Convert Smithy JSON-RPC services to OpenRPC
///|
test {
let loaded = @rpc.loader()
.add_idl(
"api.smithy",
(
#|$version: "2"
#|namespace example
#|use smithy.rpc#jsonRpc
#|use smithy.rpc#method
#|@jsonRpc(versions: ["2.0"])
#|service Api { version: "1", operations: [Ping] }
#|@method(name: "ping", params: "named", nullResult: true)
#|operation Ping {}
),
)
.assemble()
let config = @openrpc.Config::new(
@openrpc.ServiceId::parse("example#Api").unwrap(),
)
let result = @openrpc.convert_result(loaded.model.unwrap(), config)
assert_true(result.document is { "openrpc": String("1.3.2"), .. })
}moon run apps/smithy -- build --config examples/openrpc/smithy-build.jsonpub struct Config {
service : ServiceId
version : OpenRpcVersion
protocol_version : ProtocolVersion
member_names : MemberNames
timestamp_format : TimestampFormat
extensions : ExtensionPolicy
title : String?
api_version : String?
}fn Config::new(service : ServiceId, version? : OpenRpcVersion, protocol_version? : ProtocolVersion, member_names? : MemberNames, timestamp_format? : TimestampFormat, extensions? : ExtensionPolicy, title? : String?, api_version? : String?) -> Configpub(all) struct ConversionWarning {
code : WarningCode
shape : ShapeId
message : String
} derive(Eq, Debug)