Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #4
0
        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));
            }
        }
Beispiel #5
0
        /// <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);
                }
            });
        }