private HttpResponseMessage ProcessCommand()
        {
            var requestHandler = RequestHandlerFactory.GetHandler(this.Command);

            if (requestHandler != null)
            {
                requestHandler.Initialize(this.Device, this.RequestContent);
                var responseMessage = new HttpResponseMessage(HttpStatusCode.OK);
                var responseObj     = requestHandler.Handle();
                var responseXml     = responseObj.GetAsXML();

                var encoder = new ASWBXML();
                encoder.LoadXml(responseXml);
                var wbxmlContent = encoder.GetBytes();

                responseMessage.Content = new ByteArrayContent(wbxmlContent);
                responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-sync.wbxml");

                return(responseMessage);
            }
            else
            {
                //TODO: Return appropriate ResponseMessage
                //throw new InvalidCommandException(string.Format("Command {0} is not supported", this.Command.ToString()));
                return(new HttpResponseMessage(HttpStatusCode.BadRequest));
            }

            //TODO: Resturn Appropriate Response
            return(new HttpResponseMessage(HttpStatusCode.OK));
        }
        private string GetRequestContent(HttpContent requestContent)
        {
            if (requestContent == null)
            {
                return(string.Empty);
            }

            var requestContentBytes = requestContent.ReadAsByteArrayAsync().Result;

            if (requestContentBytes == null || requestContentBytes.Length == 0)
            {
                return(string.Empty);
            }

            var decoder = new ASWBXML();

            decoder.LoadBytes(requestContentBytes);

            return(decoder.GetXml());
        }