As a software engineer
I want to add a gRPC endpoint for public archive
So that public archive can be created using third party gRPC clients

Given public_archive_controller.rs and public_archive_service.rs exist
When adding public_archive_handler.rs
Then it should reflect public_archive_controller.rs
And be added to a new &#39;grpc&#39; module under the root as grpc/public_archive_handler.rs

Given gRPC requires protobuffer definitions
When adding public archive gRPC endpoints
Then create gRPC service definition for public archive request/response messages in /proto/public_archive.proto

Given gRPC needs to be integrated with Tonic server
When adding public archive gRPC endpoins
Then update lib.rs to integrate the gRPC public_archive_handler.rs

Given there is a gRPC handler for pointers in /grpc/pointer_handler.rs
When adding the public_archive_handler.rs
Then use public_archive_handler.rs as an example

Given public_archive_tool.rs exists and uses map_to_multipart_form to interface with public_archive_service.rs
When integrating public_archive_handler.rs
Then implement a similar map_to_multipart_form function for the proto File type

Provide unit tests where applicable to grpc/public_archive_handler.rs and related new code.

Implementation Notes

- Assume other handlers will be added in the future, following the same pattern, in /grpc directory/module
- Define From traits to perform mapping between structs, including errors (use ?)
- Use Actix Data instead of Arc
- Place any unit tests at the bottom of the same file as the associated production code
- Increment patch version of anttp package in Cargo.toml