public Task Dispatch(ReactiveRequest request) { Task<HttpResponseMessage> sendTask = null; try { Sending?.Invoke(this, request); var httpRequest = Convert(request); sendTask = httpClient.SendAsync(httpRequest); } catch { //Exception?.Invoke(this, e); throw; } sendTask?.ContinueWith(task => { if (task.Exception != null) { //Exception?.Invoke(this, task.Exception); throw task.Exception; } else { var response = Convert(task.Result); Receiving?.Invoke(this, response); } }); return Task.CompletedTask; }
void ObserveRequest(ReactiveRequest request) { Request = request; headersSubscription?.Dispose(); headersSubscription = request.WhenAnyValue(x => x.Headers) .Subscribe(ObserveHeaders); }
public async Task <ReactiveRequest> Deserialize(FileInfo file) { var request = new ReactiveRequest(); using (var reader = file.OpenText()) { await ReadRequestLine(reader, request); await ReadRequestHeaders(reader, request); } return(request); }
static HttpRequestMessage Convert(ReactiveRequest request) { var httpRequest = new HttpRequestMessage( new HttpMethod(request.Method.Name), request.Url.Address); if (request.Headers != null) { foreach (var header in request.Headers) { httpRequest.Headers.Add(header.Name, header.Value); } } return httpRequest; }
async Task ReadRequestLine(StreamReader reader, ReactiveRequest request) { var line = await reader.ReadLineAsync(); if (line != null && line.Length > 0) { var parts = line.Split(' '); if (parts.Length > 0) { request.Method = new ReactiveMethod(parts[0]); } if (parts.Length > 1) { request.Url = new ReactiveUrl(parts[1]); } } }
async Task ReadRequestHeaders(StreamReader reader, ReactiveRequest request) { request.Headers = new ReactiveHeaderCollection(); string line; while ((line = await reader.ReadLineAsync()) != null && line.Length > 0) { var parts = line.Split(new[] { ':' }, 2); if (parts.Length != 2) { throw new FormatException("Invalid HTTP request header"); } var name = parts[0].Trim(); var val = parts[1].Trim(); request.Headers.Add(new ReactiveHeader(name, val)); } }
public async Task <ReactiveResponse> ReActiveUid([FromBody] ReactiveRequest reactiveRequest) { return(await _prescriptionBarcodeService.ReActive(reactiveRequest)); }
public async Task <ReactiveResponse> ReActive(ReactiveRequest reactiveRequest) { var response = new ReactiveResponse(); response.ItemsInfo = new List <PrescriptionBarcodeDetailesResponse>(); var prescriptionBarcodeDetailes = new PrescriptionBarcodeDetailes(); var prescriptionBarcodeDetailesResponse = new PrescriptionBarcodeDetailesResponse(); try { if (string.IsNullOrEmpty(reactiveRequest.BarcodeUid) || string.IsNullOrEmpty(reactiveRequest.PharmacyGln) || reactiveRequest.Amount == 0 || reactiveRequest.TrackingCode == 0) { return(response.ToIncompleteInput <ReactiveResponse>()); } TTAC tTAC = new TTAC(_serviceProvider); var result = await _prescriptionBarcodeDetailesRepository.FirstOrDefault(a => a.TrackingCode == reactiveRequest.TrackingCode && a.BarcodeUid == reactiveRequest.BarcodeUid); if (result == null) { return(response.ToRowNotFound <ReactiveResponse>()); } prescriptionBarcodeDetailes.PrescriptionBarcodeId = result.PrescriptionBarcodeId; prescriptionBarcodeDetailes.PrescriptionBarcodeDetailesTypesId = (int)PrescriptionBarcodeDetailesTypeEnum.ReActiveBarcodeItems; TTACReactiveRequest tTACReactiveRequest = new TTACReactiveRequest(); TTACReactiveResponse tTACReactiveResponse = new TTACReactiveResponse(); reactiveRequest.CopyPropertiesTo(tTACReactiveRequest); tTACReactiveRequest.Username = Constants.TTAC_UserName; tTACReactiveRequest.Password = Constants.TTAC_Password; tTACReactiveResponse = await tTAC.CallReactiveApi(tTACReactiveRequest); response.ErrorCode = tTACReactiveResponse.ErrorCode; response.ErrorMessage = tTACReactiveResponse.ErrorMessage; foreach (var item in tTACReactiveResponse.ItemsInfo) { prescriptionBarcodeDetailes = new PrescriptionBarcodeDetailes(); item.CopyPropertiesTo(prescriptionBarcodeDetailes); item.CopyPropertiesTo(prescriptionBarcodeDetailesResponse); response.ItemsInfo.Add(prescriptionBarcodeDetailesResponse); prescriptionBarcodeDetailes.PrescriptionBarcodeId = result.PrescriptionBarcodeId; prescriptionBarcodeDetailes.PrescriptionBarcodeDetailesTypesId = (int)PrescriptionBarcodeDetailesTypeEnum.ReActiveBarcodeItems; if (tTACReactiveResponse.ErrorCode == 0 && item.Status == 100) { var prescriptionBarcode = await _prescriptionBarcodeRepository.FirstOrDefault(a => a.Id == result.PrescriptionBarcodeId); prescriptionBarcode.PrescriptionBarcodeStatusId = (int)PrescriptionBarcodeStatusEnum.ReActiveRequest; await _prescriptionBarcodeRepository.Update(prescriptionBarcode); } await _prescriptionBarcodeDetailesRepository.Add(prescriptionBarcodeDetailes); } response.HasError = false; return(response); } catch (Exception e) { _logService.LogText("PrescriptionBarcodeInternalError" + e.Message.ToString()); throw new Exception(e.Message); } }