/*
         * Immediately convert file on a server
         * In case of success returned converted file as Stream
         * In case of any error exception will be throw
         */
        public async Task <Stream> Convert(DocType doctype, Stream file, ConversionOptions options)
        {
            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri(Url);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            ConversionSettings settings = new ConversionSettings(Domain, Username, Password);

            settings.Options = options;

            // get file content
            using (MemoryStream ms = new MemoryStream())
            {
                file.CopyTo(ms);
                byte[] bytes = ms.ToArray();
                settings.Content = System.Convert.ToBase64String(bytes);
            }

            HttpResponseMessage response = await client.PostAsJsonAsync("api/convert/file/" + doctype.ToString(), settings);

            OASResponse resp = null;

            if (response.IsSuccessStatusCode)
            {
                resp = await response.Content.ReadAsAsync <OASResponse>();

                if (resp.ErrorCode == OASErrorCodes.Success)
                {
                    MemoryStream ms = new MemoryStream(System.Convert.FromBase64String(resp.Content));
                    return(ms);
                }
                else
                {
                    OASConversionException ex = new OASConversionException(resp.Message);
                    ex.Source = resp.ErrorCode.ToString();
                    throw ex;
                }
            }
            else
            {
                OASWebServiceException ex = new OASWebServiceException(response.ReasonPhrase);
                ex.Source = response.StatusCode.ToString();
                throw ex;
            }
        }
        /*
         * Get converted file as result of convertion job
         * In case of not ready yet null value will be returned
         * In case of any error exception will the fired
         */
        public async Task <Stream> GetConvertedFile(string FileId)
        {
            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri(Url);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            ConversionSettings settings = new ConversionSettings(Domain, Username, Password);

            HttpResponseMessage response = await client.PostAsJsonAsync("api/convert/getfile/" + FileId, settings);

            OASResponse resp = null;

            if (response.IsSuccessStatusCode)
            {
                resp = await response.Content.ReadAsAsync <OASResponse>();

                if (resp.ErrorCode == OASErrorCodes.Success)
                {
                    MemoryStream ms = null;
                    if (resp.Content != null)
                    {
                        ms = new MemoryStream(System.Convert.FromBase64String(resp.Content));
                    }
                    return(ms);
                }
                else
                {
                    OASConversionException ex = new OASConversionException(resp.Message);
                    ex.Source = resp.ErrorCode.ToString();
                    throw ex;
                }
            }
            else
            {
                OASWebServiceException ex = new OASWebServiceException(response.ReasonPhrase);
                ex.Source = response.StatusCode.ToString();
                throw ex;
            }
        }