using Pprf.Messages; using Invercargill; namespace Pprf { public class HttpPprfClient : Client { public string endpoint { get; set; } public const string HTTP_CONTENT_TYPE = "application/pprf"; private Soup.Session session; public HttpPprfClient(string endpoint) { this.endpoint = endpoint; session = new Soup.Session(); session.idle_timeout = 30; } public override Message send_message(Message message) throws Error { var soup_message = new Soup.Message("POST", endpoint); var message_data = new MemoryOutputStream (null, GLib.realloc, GLib.free); var data_stream = new DataOutputStream(message_data); message.serialise(data_stream); data_stream.flush(); data_stream.close(); var raw_data = message_data.steal_as_bytes(); soup_message.set_request_body_from_bytes(HTTP_CONTENT_TYPE, raw_data); var response_stream = session.send(soup_message); return MessageFactory.from_stream(response_stream); } } }