private string FormatSafeContent(string content, RestFormat restFormat)
        {
            string safeContent = "";

            switch (restFormat)
            {
            case RestFormat.XML:
                safeContent = FormatXMLContent(content);
                break;

            case RestFormat.JSON:
                safeContent = content;
                break;

            case RestFormat.XHTML:
                safeContent = content;
                break;

            default:
                safeContent = content;
                break;
            }

            return(safeContent);
        }
        public string ExtractData(HttpContext context, RestFormat restFormat)
        {
            string content = "";

            if (context.Request.InputStream != null)
            {
                Stream stream = context.Request.InputStream;
                stream.Seek(0, SeekOrigin.Begin);
                int    length = Convert.ToInt32(stream.Length);
                Byte[] bytes  = new Byte[length];
                stream.Read(bytes, 0, length);
                bool isAttachmentFileUpload = IsFileUpload(context.Request);

                if (bytes.Length > 0 && !isAttachmentFileUpload)
                {
                    content = FormatSafeContent((new UTF8Encoding()).GetString(bytes), restFormat);
                }
            }

            return(content);
        }
        public RestCommand(LoginUser loginUser, Organization organization, HttpContext context)
        {
            _organization = organization;
            _loginUser    = loginUser;

            switch (context.Request.HttpMethod.ToUpper())
            {
            case "GET": _method = HttpMethod.Get; break;

            case "PUT": _method = HttpMethod.Put; break;

            case "POST": _method = HttpMethod.Post; break;

            case "DELETE": _method = HttpMethod.Delete; break;

            default: _method = HttpMethod.Unsupported; break;
            }

            if (_method == HttpMethod.Unsupported)
            {
                throw new RestException(HttpStatusCode.MethodNotAllowed);
            }

            _context  = context;
            _segments = new List <string>();
            bool   flag   = false;
            string format = "";

            for (int i = 0; i < context.Request.Url.Segments.Length; i++)
            {
                string s = context.Request.Url.Segments[i].ToLower().Trim().Replace("/", "");
                if (flag)
                {
                    if (format == "")
                    {
                        format = s;
                    }
                    else
                    {
                        _segments.Add(s);
                    }
                }

                if (s == "api")
                {
                    flag = true;
                }
            }

            if (_segments == null || _segments.Count < 1)
            {
                throw new RestException(HttpStatusCode.NotFound);
            }

            switch (format)
            {
            case "xml": _format = RestFormat.XML; break;

            case "json": _format = RestFormat.JSON; break;

            case "xhtml": _format = RestFormat.XHTML; break;

            default: _format = RestFormat.XML; break;
            }

            _segments[_segments.Count - 1] = Path.GetFileNameWithoutExtension(_segments[_segments.Count - 1]);


            _filters = context.Request.QueryString;
            _data    = ExtractData(_context, _format);
        }