Skip to content
File

Blob: src/workerd/util/capnp-mock.c++

813 bytes
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 
7namespace workerd {
8 
9kj::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