diff options
Diffstat (limited to 'zenserver/projectstore.cpp')
| -rw-r--r-- | zenserver/projectstore.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/zenserver/projectstore.cpp b/zenserver/projectstore.cpp index 0dc0da1ae..c2c8c2421 100644 --- a/zenserver/projectstore.cpp +++ b/zenserver/projectstore.cpp @@ -1057,8 +1057,21 @@ HttpProjectService::HttpProjectService(CasStore& Store, ProjectStore* Projects) IoBuffer Payload = HttpReq.ReadPayload(); + CbPackage::AttachmentResolver Resolver = [&](const IoHash& Hash) -> SharedBuffer { + std::filesystem::path AttachmentPath = Log.TempPath() / Hash.ToHexString(); + + if (IoBuffer Data = IoBufferBuilder::MakeFromFile(AttachmentPath.native().c_str())) + { + return SharedBuffer::Clone(MemoryView(Data.Data(), Data.Size())); + } + else + { + return {}; + } + }; + CbPackage Package; - Package.Load(Payload); + Package.Load(Payload, &UniqueBuffer::Alloc, &Resolver); CbObject Core = Package.GetObject(); |