public HttpResponseMessage GetOrdersByTableId(string id) { if (!_clientValidator.Validate(Request.GetClientCertificate(), Request.Headers.Authorization, out string message)) { return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, new UnauthorizedAccessException(message))); } log.DebugEx(tr => tr.Set(String.Format("GET ~/api/tables/{0}/orders", id))); try { var r = new PATResponse { Orders = _ordersRepository.GetOrdersFromTable(id) }; log.DebugEx(tr => tr.Set("return", r)); return(Request.CreateResponse(HttpStatusCode.OK, r)); } catch (InvalidRequestException ex) { log.ErrorEx(tr => tr.Set(String.Format("InvalidRequestException in GET ~/api/tables/{0}/orders", id), ex)); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } catch (ResourceNotFoundException ex) { log.ErrorEx(tr => tr.Set(String.Format("ResourceNotFoundException in GET ~/api/tables/{0}/orders", id), ex)); return(Request.CreateErrorResponse(HttpStatusCode.NotFound, ex)); } }
public HttpResponseMessage CreateTender([FromBody] PATRequest tenderRequest) { if (!_clientValidator.Validate(Request.GetClientCertificate(), Request.Headers.Authorization, out string message)) { return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, new UnauthorizedAccessException(message))); } log.DebugEx(tr => tr.Set("POST ~/api/tenders", tenderRequest)); // Extract the tender from the request if (tenderRequest == null || tenderRequest.Tender == null) { log.ErrorEx(tr => tr.Set("TenderRequest.Tender==NULL in POST ~/api/tenders.")); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "TenderRequest.Tender==NULL")); } try { var r = new PATResponse { Tender = _tendersRepository.CreateTender(tenderRequest.Tender) }; log.DebugEx(tr => tr.Set("return", r)); return(Request.CreateResponse(HttpStatusCode.Created, r)); } catch (InvalidRequestException ex) { log.ErrorEx(tr => tr.Set("InvalidRequestException in POST ~/api/tenders.", ex)); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } catch (ResourceNotFoundException ex) { log.ErrorEx(tr => tr.Set("ResourceNotFoundException in POST ~/api/tenders.", ex)); return(Request.CreateErrorResponse(HttpStatusCode.NotFound, ex)); } }
public HttpResponseMessage CreateEFTPOSCommand([FromBody] PATRequest commandRequest) { if (!_clientValidator.Validate(Request.GetClientCertificate(), Request.Headers.Authorization, out string message)) { return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, new UnauthorizedAccessException(message))); } log.DebugEx(tr => tr.Set("POST ~/api/eftpos/commands", commandRequest)); // Extract the eftpos command from the request if (commandRequest == null || commandRequest.EFTPOSCommand == null) { log.ErrorEx(tr => tr.Set("TenderRequest.EFTPOSCommand==NULL in POST ~/api/eftpos/commands.")); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "PATRequest.EFTPOSCommand==NULL")); } try { var r = new PATResponse { EFTPOSCommand = _eftposRepository.CreateEFTPOSCommand(commandRequest.EFTPOSCommand) }; log.DebugEx(tr => tr.Set("return", r)); return(Request.CreateResponse(HttpStatusCode.OK, r)); } catch (InvalidRequestException ex) { log.ErrorEx(tr => tr.Set("InvalidRequestException in POST ~/api/eftpos/commands.", ex)); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } catch (ResourceNotFoundException ex) { log.ErrorEx(tr => tr.Set("InvalidRequestException in POST ~/api/eftpos/commands.", ex)); return(Request.CreateErrorResponse(HttpStatusCode.NotFound, ex)); } }
public HttpResponseMessage GetSettings() { if (!_clientValidator.Validate(Request.GetClientCertificate(), Request.Headers.Authorization, out string message)) { return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, new UnauthorizedAccessException(message))); } log.DebugEx("GET ~/api/settings"); try { var r = new PATResponse { Settings = _settingsRepository.GetSettings() }; log.DebugEx(tr => tr.Set("return", r)); return(Request.CreateResponse(HttpStatusCode.OK, r)); } catch (InvalidRequestException ex) { log.ErrorEx(tr => tr.Set("InvalidRequestException in GET ~/api/settings.", ex)); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } catch (ResourceNotFoundException ex) { log.ErrorEx(tr => tr.Set("ResourceNotFoundException in GET ~/api/settings.", ex)); return(Request.CreateErrorResponse(HttpStatusCode.NotFound, ex)); } }
/// <summary> /// 验证请求中的客户端Id与客户端密钥的合法性 /// </summary> /// <param name="context"></param> /// <returns></returns> public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { string clientId, clientSecret; context.TryGetBasicCredentials(out clientId, out clientSecret); //判断客户端Id与客户端密钥的合法性,不合法的拦截 bool validated = await _clientValidator.Validate(clientId, clientSecret); if (!validated) { context.SetError("invalid_client", "client is not valid."); return; } context.Validated(clientId); await base.ValidateClientAuthentication(context); }
public virtual void ValidateClient(object client) { Session session = client as Session; if (session == null) { return; } Task.Factory.StartNew(() => { try { string target = ""; string reqpath = WebMessage.GetSessionData(session, "Path").ToString(); if (m_ClientValidator != null) { target = m_ClientValidator.Validate(session.GetRemoteIp(), reqpath); } else { List <string> paramList = new List <string>(); string[] parts = reqpath.Split('/'); foreach (var part in parts) { if (part.Trim().Length > 0) { paramList.Add(part.Trim()); } } if (paramList.Count > 0) { target = paramList.First(); } } if (target != null && target.Length > 0) { bool isOK = true; try { byte[] welcomeData = null; string welcomeText = ""; var channel = m_ResourceManager.GetChannel(target, false); if (channel != null) { welcomeData = channel.GetWelcomeData(); welcomeText = channel.GetWelcomeText(); } if (welcomeData != null && welcomeData.Length > 0) { session.Send(new WebMessage(welcomeData)); } if (welcomeText != null && welcomeText.Length > 0) { session.Send(new WebMessage(welcomeText)); } } catch { isOK = false; } if (isOK) { List <object> clients = null; int channelClientCount = 0; lock (m_WebClients) { if (m_WebClients.ContainsKey(target)) { clients = m_WebClients[target]; } } if (clients != null) { lock (clients) { clients.Add(session); channelClientCount = clients.Count; } } if (m_InputPort <= 0) { // update state lock (m_States) { if (!m_States.ContainsKey(target)) { var channelState = new MediaChannelState(); channelState.ChannelName = target; channelState.ClientCount = channelClientCount; channelState.ServerInfo = m_ServerName + "(" + m_InputIp + ":" + m_InputPort + "/" + m_OutputIp + ":" + m_OutputPort + ")"; m_States.Add(target, channelState); } } } } } else { session.Close(); // just close it if failed to validate } } catch (Exception ex) { Logger.Error("Validation error: " + ex.Message); } }); }