예제 #1
0
        public virtual ConcurrentDictionary <string, StampResponseV2> TimbrarV2Async(string[] xmls, bool isb64 = false)
        {
            StampResponseHandlerV2 handler = new StampResponseHandlerV2();
            ConcurrentBag <string> request = new ConcurrentBag <string>(xmls);
            ConcurrentDictionary <string, StampResponseV2> response = new ConcurrentDictionary <string, StampResponseV2>();

            string format = isb64 ? "b64" : "";

            Parallel.ForEach(request, new ParallelOptions {
                MaxDegreeOfParallelism = Environment.ProcessorCount
            }, async i =>
            {
                try
                {
                    var xmlBytes = Encoding.UTF8.GetBytes(i);
                    var headers  = await GetHeadersAsync();
                    var content  = GetMultipartContent(xmlBytes);
                    var proxy    = Helpers.RequestHelper.ProxySettings(this.Proxy, this.ProxyPort);
                    response.TryAdd(i, await handler.GetPostResponseAsync(this.Url,
                                                                          string.Format("cfdi33/{0}/{1}/{2}",
                                                                                        _operation,
                                                                                        StampTypes.v2.ToString(),
                                                                                        format), headers, content, proxy));
                }
                catch (Exception ex)
                {
                    response.TryAdd(i, handler.HandleException(ex));
                }
            });
            return(response);
        }
예제 #2
0
        public virtual async Task <StampResponseV2> TimbrarV2Async(string xml, bool isb64 = false)
        {
            StampResponseHandlerV2 handler = new StampResponseHandlerV2(xml);

            try
            {
                string format   = isb64 ? "b64" : "";
                var    xmlBytes = Encoding.UTF8.GetBytes(xml);
                var    headers  = await GetHeadersAsync();

                var content = GetMultipartContent(xmlBytes);
                var proxy   = Helpers.RequestHelper.ProxySettings(this.Proxy, this.ProxyPort);
                return(await handler.GetPostResponseAsync(this.Url,
                                                          string.Format("cfdi33/v2/{0}/{1}/{2}",
                                                                        _operation,
                                                                        StampTypes.v2.ToString(),
                                                                        format), headers, content, proxy));
            }
            catch (Exception ex)
            {
                return(handler.HandleException(ex));
            }
        }