http_extensions : protobuf

An http extension that serializes requests body to protobuf and deserializes responses's content from protobuf.

Usage

final client = ExtendedClient(
  inner: Client(),
  extensions: [
    ProtobufExtension(logger: Logger("Protobuf"),
    defaultOptions: ProtobufOptions(
      contentType: "application/x-protobuf", // The value of the content type header sent to server.
      shouldDeserialize: (response) => response.statusCode >= 200 && response.statusCode < 300, // Indicates whether a response should be deserialized
      shouldSerialize: (request) => true, // Indicates whether a request should be serialized
    )),
  ],
);

// The new request will serialize requestMessage to body and responseMessage from response content
final proto = ProtobufOptions(
  requestMessage: HelloRequest(),
  responseMessage: HelloReply(),
);

final response = await client.postWithOptions(
  "http://www.flutter.dev",
  options: [proto],
);

if (response.statusCode == 200) {
  print("Reply: ${proto.responseMessage}");
}