File
Blob: src/workerd/util/capnp-mock.c++
| 1 | // Copyright (c) 2017-2022 Cloudflare, Inc. |
| 2 | // Licensed under the Apache 2.0 license found in the LICENSE file or at: |
| 3 | // https://opensource.org/licenses/Apache-2.0 |
| 4 | |
| 5 | #include "capnp-mock.h" |
| 6 | |
| 7 | namespace workerd { |
| 8 | |
| 9 | kj::String canonicalizeCapnpText( |
| 10 | capnp::StructSchema schema, kj::StringPtr text, kj::Maybe<kj::StringPtr> capName) { |
| 11 | capnp::MallocMessageBuilder message; |
| 12 | auto root = message.getRoot<capnp::DynamicStruct>(schema); |
| 13 | TEXT_CODEC.decode(text, root); |
| 14 | KJ_IF_SOME(c, capName) { |
| 15 | // Fill in dummy capability. |
| 16 | auto field = schema.getFieldByName(c); |
| 17 | root.set(field, |
| 18 | capnp::Capability::Client(KJ_EXCEPTION(FAILED, "dummy")) |
| 19 | .castAs<capnp::DynamicCapability>(field.getType().asInterface())); |
| 20 | } |
| 21 | return TEXT_CODEC.encode(root.asReader()); |
| 22 | } |
| 23 | |
| 24 | } // namespace workerd |