Cool, thanks @tony612 for this project. I feel this is the right direction for protobufs in Elixir.
Quick question: do you have thoughts on how we'd build extensions? I want to add something akin to:
service ExampleService {
rpc ping (PingRequest) returns (PongResponse) {
option (google.api.http) = { post: "/ping" };
}
rpc status (StatusRequest) returns (StatusResponse) {
option (google.api.http) = { get: "/status" };
}
}
This would allow us to use services like grpc gateway. I would expect this to build a service object similar to:
defmodule Defs.ExampleService do
use Protobuf.Service
rpc :ping, Defs.PingRequest, Defs.PongResponse, %{"google.api.http": %{post: "/ping"}}
rpc :status, Defs.StatusRequest, Defs.StatusResponse, %{"google.api.http": %{post: "/status"}}
end
Also, would it be possible to make the service definitions generic and then the grpc library could easily build off of this. E.g., as above, we could just have the service definition be a simple module and the grpc could run something akin to:
in grpc library:
# ... somewhere
grpc.add_services([Defs.ExampleService])
# ... somewhere else
def add_services(services) do
for service <- services do
for rpc <- service.rpcs do
add_route(rpc.name, rpc.request_message, rpc.response_message, rpc.options)
end
end
end
I've started looking into how to build extensions, but it's a bit mind-bending to track how to add that. Happy for your thoughts here.
Cool, thanks @tony612 for this project. I feel this is the right direction for protobufs in Elixir.
Quick question: do you have thoughts on how we'd build extensions? I want to add something akin to:
This would allow us to use services like grpc gateway. I would expect this to build a service object similar to:
Also, would it be possible to make the service definitions generic and then the grpc library could easily build off of this. E.g., as above, we could just have the service definition be a simple module and the grpc could run something akin to:
in grpc library:
I've started looking into how to build extensions, but it's a bit mind-bending to track how to add that. Happy for your thoughts here.