private async Task InvokeTextPortal(string operation, Stream requestStream, Stream responseStream) { string requestString; using (var reader = new StreamReader(requestStream)) requestString = await reader.ReadToEndAsync(); var requestArray = System.Convert.FromBase64String(requestString); var requestBuffer = new MemoryStream(requestArray); var serializer = new MobileFormatter(); var result = new HttpResponse(); HttpErrorInfo errorData = null; try { var request = serializer.Deserialize(requestBuffer); result = await CallPortal(operation, request); } catch (Exception ex) { errorData = new HttpErrorInfo(ex); } var portalResult = new HttpResponse { ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData }; var responseBuffer = new MemoryStream(); serializer.Serialize(responseBuffer, portalResult); responseBuffer.Position = 0; using (var writer = new StreamWriter(responseStream)) { await writer.WriteAsync(System.Convert.ToBase64String(responseBuffer.ToArray())); } }
private async Task <ResponseMessage> InvokePortal(string operation, ByteString requestData) { var result = new HttpResponse(); HttpErrorInfo errorData = null; try { var request = MobileFormatter.Deserialize(requestData.ToByteArray()); result = await CallPortal(operation, request); } catch (Exception ex) { errorData = new HttpErrorInfo(ex); } var portalResult = new HttpResponse { ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData }; var serializer = new MobileFormatter(); using var buffer = new MemoryStream(); serializer.Serialize(buffer, portalResult); buffer.Position = 0; return(new ResponseMessage { Body = ByteString.CopyFrom(buffer.ToArray()) }); }
private async Task <byte[]> InvokePortal(string operation, byte[] data) { var result = new HttpResponse(); HttpErrorInfo errorData = null; try { var buffer = new MemoryStream(data); buffer.Position = 0; var request = MobileFormatter.Deserialize(buffer.ToArray()); var portal = Portal; switch (operation) { case "create": result = await portal.Create((CriteriaRequest)request).ConfigureAwait(false); break; case "fetch": result = await portal.Fetch((CriteriaRequest)request).ConfigureAwait(false); break; case "update": result = await portal.Update((UpdateRequest)request).ConfigureAwait(false); break; case "delete": result = await portal.Delete((CriteriaRequest)request).ConfigureAwait(false); break; default: throw new InvalidOperationException(operation); } } catch (Exception ex) { errorData = new HttpErrorInfo(ex); } var portalResult = new HttpResponse { ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData }; var bytes = MobileFormatter.Serialize(portalResult); return(bytes); }
private async Task InvokePortal(string operation, Stream requestStream, Stream responseStream) { var serializer = new MobileFormatter(); var result = new HttpResponse(); HttpErrorInfo errorData = null; try { var request = serializer.Deserialize(requestStream); result = await CallPortal(operation, request); } catch (Exception ex) { errorData = new HttpErrorInfo(ex); } var portalResult = new HttpResponse { ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData }; serializer.Serialize(responseStream, portalResult); }
private async Task <byte[]> InvokePortal(string operation, byte[] data) { var result = new HttpResponse(); HttpErrorInfo errorData = null; try { var buffer = new MemoryStream(data); buffer.Position = 0; var request = MobileFormatter.Deserialize(buffer.ToArray()); result = await CallPortal(operation, request); } catch (Exception ex) { errorData = new HttpErrorInfo(ex); } var portalResult = new HttpResponse { ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData }; var bytes = MobileFormatter.Serialize(portalResult); return(bytes); }
private async Task InvokePortal(string operation, Stream requestStream, Stream responseStream) { var serializer = new MobileFormatter(); var result = new HttpResponse(); HttpErrorInfo errorData = null; Response.Headers.Add("Content-type", "application/octet-stream,text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); Response.Headers.Add("Accept-Encoding", "gzip,deflate"); try { var request = serializer.Deserialize(requestStream); result = await CallPortal(operation, request); } catch (Exception ex) { errorData = new HttpErrorInfo(ex); } var portalResult = new HttpResponse { ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData }; serializer.Serialize(responseStream, portalResult); }
private async Task <ResponseMessage> InvokePortal(string operation, ByteString requestData) { var result = new HttpResponse(); HttpErrorInfo errorData = null; try { var request = SerializationFormatterFactory.GetFormatter().Deserialize(requestData.ToByteArray()); result = await CallPortal(operation, request); } catch (Exception ex) { errorData = new HttpErrorInfo(ex); } var portalResult = new HttpResponse { ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData }; var buffer = SerializationFormatterFactory.GetFormatter().Serialize(portalResult); return(new ResponseMessage { Body = ByteString.CopyFrom(buffer) }); }
private async Task<byte[]> InvokePortal(string operation, byte[] data) { var result = new HttpResponse(); HttpErrorInfo errorData = null; try { var buffer = new MemoryStream(data); buffer.Position = 0; var request = MobileFormatter.Deserialize(buffer.ToArray()); var portal = Portal; switch (operation) { case "create": result = await portal.Create((CriteriaRequest)request).ConfigureAwait(false); break; case "fetch": result = await portal.Fetch((CriteriaRequest)request).ConfigureAwait(false); break; case "update": result = await portal.Update((UpdateRequest)request).ConfigureAwait(false); break; case "delete": result = await portal.Delete((CriteriaRequest)request).ConfigureAwait(false); break; default: throw new InvalidOperationException(operation); } } catch (Exception ex) { errorData = new HttpErrorInfo(ex); } var portalResult = new HttpResponse { ErrorData = errorData, GlobalContext = result.GlobalContext, ObjectData = result.ObjectData }; var bytes = MobileFormatter.Serialize(portalResult); return bytes; }