コード例 #1
0
        /// <summary>
        /// Enforces the content-type to be application/octet-stream for
        /// POST and PUT requests.
        /// </summary>
        /// <param name="request">servlet request.</param>
        /// <param name="response">servlet response.</param>
        /// <param name="chain">filter chain.</param>
        /// <exception cref="System.IO.IOException">thrown if an IO error occurrs.</exception>
        /// <exception cref="Javax.Servlet.ServletException">thrown if a servet error occurrs.
        ///     </exception>
        public virtual void DoFilter(ServletRequest request, ServletResponse response, FilterChain
                                     chain)
        {
            bool contentTypeOK          = true;
            HttpServletRequest  httpReq = (HttpServletRequest)request;
            HttpServletResponse httpRes = (HttpServletResponse)response;
            string method = httpReq.GetMethod();

            if (method.Equals("PUT") || method.Equals("POST"))
            {
                string op = httpReq.GetParameter(HttpFSFileSystem.OpParam);
                if (op != null && UploadOperations.Contains(StringUtils.ToUpperCase(op)))
                {
                    if (Sharpen.Runtime.EqualsIgnoreCase("true", httpReq.GetParameter(HttpFSParametersProvider.DataParam
                                                                                      .Name)))
                    {
                        string contentType = httpReq.GetContentType();
                        contentTypeOK = Sharpen.Runtime.EqualsIgnoreCase(HttpFSFileSystem.UploadContentType
                                                                         , contentType);
                    }
                }
            }
            if (contentTypeOK)
            {
                chain.DoFilter(httpReq, httpRes);
            }
            else
            {
                httpRes.SendError(HttpServletResponse.ScBadRequest, "Data upload requests must have content-type set to '"
                                  + HttpFSFileSystem.UploadContentType + "'");
            }
        }
コード例 #2
-2
        /// <exception cref="System.Exception"/>
        private void Test(string method, string operation, string contentType, bool upload
                          , bool error)
        {
            HttpServletRequest  request  = Org.Mockito.Mockito.Mock <HttpServletRequest>();
            HttpServletResponse response = Org.Mockito.Mockito.Mock <HttpServletResponse>();

            Org.Mockito.Mockito.Reset(request);
            Org.Mockito.Mockito.When(request.GetMethod()).ThenReturn(method);
            Org.Mockito.Mockito.When(request.GetParameter(HttpFSFileSystem.OpParam)).ThenReturn
                (operation);
            Org.Mockito.Mockito.When(request.GetParameter(HttpFSParametersProvider.DataParam.
                                                          Name)).ThenReturn(bool.ToString(upload));
            Org.Mockito.Mockito.When(request.GetContentType()).ThenReturn(contentType);
            FilterChain chain  = Org.Mockito.Mockito.Mock <FilterChain>();
            Filter      filter = new CheckUploadContentTypeFilter();

            filter.DoFilter(request, response, chain);
            if (error)
            {
                Org.Mockito.Mockito.Verify(response).SendError(Org.Mockito.Mockito.Eq(HttpServletResponse
                                                                                      .ScBadRequest), Org.Mockito.Mockito.Contains("Data upload"));
            }
            else
            {
                Org.Mockito.Mockito.Verify(chain).DoFilter(request, response);
            }
        }