예제 #1
0
        public async Task <List <DownloadedFile> > GetJobResult(Callbacks.ArthurDocJobCommunicationStatus callback, string jobId)
        {
            var files = new List <DownloadedFile>();

            try
            {
                callback?.Invoke("Getting a job result.", "Orange");
                var client = GetHttpClient();
                var url    = new StringBuilder(_configuration.Endpoints.JobResultPath).Append(jobId);
                var result = await client.GetStringAsync(url.ToString());

                var res = JsonConvert.DeserializeObject <JobResultResponse>(result);
                callback?.Invoke("Successfully download information about generated files.", "Orange");
                var i = 1;
                foreach (var re in res.Files)
                {
                    var file = new DownloadedFile
                    {
                        Name = re.File.Name
                    };
                    callback?.Invoke($"Downloading file {i++} from {res.Files.Count}.", "Orange");
                    var fileContent = await client.GetByteArrayAsync(re.File.Url);

                    file.FileContent = fileContent;
                    files.Add(file);
                }
                return(files);
            }
            catch (Exception e)
            {
                _logger.Error($"Error in SendNewJobRequest: {e.Message}");
                callback?.Invoke("A error occurrs in getJobResult proces.", "Red");
                return(null);
            }
        }
예제 #2
0
        public async Task <bool> GetJobStatus(Callbacks.ArthurDocJobCommunicationStatus callback, string jobId)
        {
            callback?.Invoke("Checking job status...", "Orange");
            var client = GetHttpClient();
            var url    = new StringBuilder(_configuration.Endpoints.JobStatusPath).Append(jobId);

            var result = await client.GetStringAsync(url.ToString());

            var res = JsonConvert.DeserializeObject <JobStatusResponse>(result);

            if (res.Status.Equals("ready"))
            {
                callback?.Invoke("Job finished.", "Green");
            }
            else
            {
                callback?.Invoke("Job is current in process. Checking again after 2 seconds.", "Orange");
            }
            return(res.Status.Equals("ready"));
        }
예제 #3
0
        public async Task <string> SendNewJobRequest(Callbacks.ArthurDocJobCommunicationStatus callback, NewReqestParameters requestParameters, string requestName, bool mergeFile)
        {
            try
            {
                callback?.Invoke("Creating request", "Orange");
                var client = GetHttpClient();

                NewJobRequestBase data;

                if (requestParameters.IsXml)
                {
                    data = new NewJobRequestJson
                    {
                        Name       = requestName,
                        TemplateId = requestParameters.TemplateGuid,
                        File       = requestParameters.XmlBody,
                        MergeFiles = mergeFile
                    };
                }
                else if (requestParameters.IsJson)
                {
                    data = new NewJobRequestJson
                    {
                        Name       = requestName,
                        TemplateId = requestParameters.TemplateGuid,
                        File       = requestParameters.JsonBody,
                        MergeFiles = mergeFile
                    };
                }
                else
                {
                    data = new NewJobRequestBase64
                    {
                        Name       = requestName,
                        TemplateId = requestParameters.TemplateGuid,
                        File       = requestParameters.FileContent,
                        MergeFiles = mergeFile
                    };
                }

                JsonSerializerSettings serializerSettings = new JsonSerializerSettings
                {
                    StringEscapeHandling = StringEscapeHandling.EscapeNonAscii,
                    Culture    = CultureInfo.CurrentUICulture,
                    Formatting = Formatting.Indented
                };
                var jsonToSend = JsonConvert.SerializeObject(data, serializerSettings);

                var content = new StringContent(jsonToSend, Encoding.UTF8, "application/json");
                callback?.Invoke("Sending request", "Orange");
                var response = await client.PostAsync(_configuration.Endpoints.CreateJobPath, content);

                var deserializedObject = JsonConvert.DeserializeObject <NewJobResponse>(response.Content.ReadAsStringAsync().Result);
                callback?.Invoke("A request has been successfully submitted.", "Green");
                return(deserializedObject.JobId);
            }
            catch (Exception e)
            {
                callback?.Invoke("A error occurrs in sending proces to ArthurDoc.", "Red");
                _logger.Error($"Error in SendNewJobRequest: {e.Message}");
                return("err0000000000000000000");
            }
        }