public async Task <bool> UploadBytes(string url, byte[] data) { try { if (_networkInformation.QuickNetworkCheck()) { var native = new NativeMessageHandler(); var httpClient = new HttpClient(native); var message = new HttpRequestMessage(HttpMethod.Post, url); native.RegisterForProgress(message, (bytes, totalBytes, expected) => new TransferProgressMessage(url, bytes, totalBytes, expected, true).Send()); var content = new ByteArrayContent(data); message.Content = content; var result = await httpClient.SendAsync(message); return(result.IsSuccessStatusCode); } } catch { Debug.WriteLine("WARNING: Could not upload: {0}", url); } return(false); }
public async Task <bool> UploadBytes(string url, byte[] data) { try { if (_networkInformation.QuickNetworkCheck()) { var httpClient = new HttpClient(); var message = new HttpRequestMessage(HttpMethod.Post, url); var content = new ByteArrayContent(data); message.Content = content; var result = await httpClient.SendAsync(message); return(result.IsSuccessStatusCode); } } catch { Debug.WriteLine("WARNING: Could not upload: {0}", url); } return(false); }
Task _runStage(XFlowState state) { if (state.State != XFlowStates.WaitingForNetwork && state.State != XFlowStates.WaitingForRetry && state.State != XFlowStates.WaitingToStart) { return(null); } if (_inProgressStates.Contains(state)) { return(null); } var t = Task.Run(async() => { var stage = _getStage(state); if (stage.RequiresNetwork && !_networkStatus.QuickNetworkCheck()) { state.State = XFlowStates.WaitingForNetwork; await Task.Yield(); return; } state.Text = stage.ProcessingText; state.State = XFlowStates.InProgress; state.Timestamp = DateTime.UtcNow; if (stage.IsDisconnectedProcess) { state.State = XFlowStates.DisconnectedProcessing; await _save(); Debug.WriteLine("Stopping flow for disconnected state, will resume when asked. {0}", state); return; } await _save(); XStageResult failResult = null; try { if (_inProgressStates.Contains(state)) { return; } _inProgressStates.Add(state); var result = await stage.Function(state.ItemId); if (result.Id != Guid.Empty) { state.ItemId = result.Id; } state.PreviousStageResult = result; _inProgressStates.Remove(state); if (!result.IsSuccess) { await _failResult(state); } else { await _successResult(state); } } catch (Exception ex) { _inProgressStates.Remove(state); failResult = new XStageResult(false, state.ItemId, null, exception: ex.ToString()); } if (failResult != null) { state.PreviousStageResult = failResult; var stateString = _entitySerialiser.Serialise(state); Debug.WriteLine("Caught exception process: {0}", stateString); await _failResult(state); } _cancelProcessWait(); }); return(t); }