private async Task <bool> SendRequest(EFTPayAtTableRequest request) { bool result = false; try { _logger.Log("Sending request..."); result = await eft.WriteRequestAsync(request); } catch (Exception ex) { _logger.Log(ex.Message, LogType.ERROR); result = false; } return(result); }
async Task HandleRequest(POSAPIMsg message, Func <PATResponse> func) { _logger.Log($"Processing {message.Header.RequestType} {message.Header.RequestMethod}"); // Get content ResponseCode rc = ResponseCode.Ok; string content = null; try { PATResponse patResponse = func.Invoke(); content = JsonConvert.SerializeObject(patResponse); } catch (InvalidRequestException ex) { _logger.Log(ex.Message, LogType.ERROR); rc = ResponseCode.BadRequest; } catch (ResourceNotFoundException ex) { _logger.Log(ex.Message, LogType.ERROR); rc = ResponseCode.NotFound; } catch (Exception ex) { _logger.Log(ex.Message, LogType.ERROR); rc = ResponseCode.ServerError; } // Build response POSAPIMsg resp = new POSAPIMsg() { Header = new POSAPIMsgHeader() { RequestMethod = message.Header.RequestMethod, RequestType = message.Header.RequestType, ResponseCode = content != null ? ResponseCode.Ok : rc, ContentLength = content?.Length ?? 0 }, Content = content }; var respString = resp.ToString(); _logger.Log(new LogData(respString, $"TX (Building request): {respString}")); try { // build eft request EFTPayAtTableRequest eftRequest = new EFTPayAtTableRequest(); eftRequest.Header = resp.Header.ToString(); eftRequest.Content = resp.Content; await SendRequest(eftRequest); } catch (Exception ex) { _logger.Log(ex.Message, LogType.ERROR); throw; } }