Beispiel #1
0
        public static async Task <Result> TextFromFileAsync(string apikey, string fileOnDisk, string client, int priority,
                                                            MiningIntensity intensity, string origFilename = "", TimeSpan?maxWaitingTime = null,
                                                            TimeSpan?restartTaskAfterTime = null /*, Api.CallbackData callBackData = null*/)
        {
            Api.CallbackData callBackData = null; //temporaty disable callBack

            if (string.IsNullOrEmpty(origFilename))
            {
                origFilename = System.IO.Path.GetFileName(fileOnDisk);
            }

            var id = await uploadFileAsync(apikey, fileOnDisk, client, priority, intensity, origFilename,
                                           maxWaitingTime ?? defaultWaitingTime, restartTaskAfterTime /*, callBackData */);

            ///await Task.Delay()

            if (callBackData == null)
            {
                return(await WaitingForResultAsync(apikey, id, maxWaitingTime ?? defaultWaitingTime));
            }
            else
            {
                return new Result()
                       {
                           Id = id, IsValid = Result.ResultStatus.InQueueWithCallback
                       }
            };
            //return result;
        }
Beispiel #2
0
        private static async Task <string> uploadFileAsync(string apikey, string fileOnDisk, string client, int priority,
                                                           MiningIntensity intensity, string origFilename, TimeSpan maxWaitingTime, TimeSpan?restartTaskAfterTime = null,
                                                           Api.CallbackData callBackData = null
                                                           )
        {
            string callBackDataString = "";

            if (callBackData != null)
            {
                callBackDataString = Newtonsoft.Json.JsonConvert.SerializeObject(callBackData);
            }

            var fullUrl = "";

            byte[] resbyte;
            string res = "";

            try
            {
                using (WebOcr wc = new WebOcr())
                {
                    string param = "fn=" + System.Net.WebUtility.UrlEncode((origFilename ?? ""))
                                   + "&client=" + System.Net.WebUtility.UrlEncode(client ?? "")
                                   + "&apikey=" + apikey
                                   + "&priority=" + priority
                                   + "&intensity=" + (int)intensity
                                   + "&expirationIn=" + (int)(maxWaitingTime.TotalSeconds * 1.05) //add 5%
                                   + "&restartIn=" + (int)(restartTaskAfterTime?.TotalSeconds ?? 0)
                                   + "&callbackData=" + System.Net.WebUtility.UrlEncode(callBackDataString);

                    fullUrl = ApiUrl + "addTask.ashx?" + param;
                    resbyte = await wc.UploadFileTaskAsync(fullUrl, "POST", fileOnDisk);

                    res = System.Text.Encoding.UTF8.GetString(resbyte);
                    Newtonsoft.Json.Linq.JToken json = Newtonsoft.Json.Linq.JToken.Parse(res);

                    if (json["taskid"] != null)
                    {
                        return(json["taskid"].ToString());
                    }
                    else
                    {
                        logger.Error($"ExtApi.TextFromFileAsync API Exception\nFile:{origFilename}\n content: " + res);
                        throw new ApiException(res);
                    }
                }
            }
            catch (System.Net.WebException e)
            {
                logger.Debug($"called ext API TextFromFile {fullUrl}.\nResponse: {res}\n" + ApiUrl, e);
                throw new ApiException("called ext API ", e);
            }
            catch (Exception e)
            {
                logger.Debug($"called ext API TextFromFile {fullUrl}.\nResponse: {res}\n" + ApiUrl, e);
                throw;
            }
        }
Beispiel #3
0
        public static Result TextFromFile(string apikey, string fileOnDisk, string client, int priority,
                                          MiningIntensity intensity, string origFilename = "", TimeSpan?maxWaitingTime = null,
                                          TimeSpan?restartTaskAfterTime = null /*, Api.CallbackData callBackData = null*/)
        {
            Api.CallbackData callBackData = null; //temporaty disable callBack

            if (string.IsNullOrEmpty(origFilename))
            {
                origFilename = Lib.OCR.DocTools.GetFilename(fileOnDisk);
            }

            TimeSpan?waitTime = maxWaitingTime;

            if (waitTime == null && callBackData != null)
            {
                waitTime = TimeSpan.FromDays(14);
            }
            else if (waitTime == null)
            {
                waitTime = defaultWaitingTime;
            }

            var id = uploadFile(apikey, fileOnDisk, client, priority, intensity, origFilename,
                                maxWaitingTime ?? defaultWaitingTime, restartTaskAfterTime /*, callBackData */);

            if (callBackData == null)
            {
                return(WaitingForResult(apikey, id, maxWaitingTime ?? defaultWaitingTime));
            }
            else
            {
                return new Result()
                       {
                           Id = id, IsValid = Result.ResultStatus.InQueueWithCallback
                       }
            };
        }
Beispiel #4
0
        public static async Task <Result> TextFromUrlAsync(string apikey, Uri url, string client, int priority,
                                                           MiningIntensity intensity, string origFilename = null, TimeSpan?maxWaitingTime = null,
                                                           TimeSpan?restartTaskAfterTime = null /*, Api.CallbackData callBackData = null*/)
        {
            string fullUrl = null;
            string taskId  = null;

            Api.CallbackData callBackData = null; //temporaty disable callBack

            try
            {
                if (string.IsNullOrEmpty(origFilename))
                {
                    origFilename = Lib.OCR.DocTools.GetFilename(url.LocalPath);
                }
                TimeSpan?waitTime = maxWaitingTime;
                if (waitTime == null && callBackData != null)
                {
                    waitTime = TimeSpan.FromDays(14);
                }
                else if (waitTime == null)
                {
                    waitTime = defaultWaitingTime;
                }

                string callBackDataString = "";
                if (callBackData != null)
                {
                    callBackDataString = Newtonsoft.Json.JsonConvert.SerializeObject(callBackData);
                }

                using (WebOcr wc = new WebOcr())
                {
                    string param = "url=" + System.Net.WebUtility.UrlEncode(url.AbsoluteUri)
                                   + "&apikey=" + apikey
                                   + "&fn=" + System.Net.WebUtility.UrlEncode(origFilename ?? "")
                                   + "&client=" + System.Net.WebUtility.UrlEncode(client ?? "")
                                   + "&priority=" + priority
                                   + "&intensity=" + (int)intensity
                                   + "&expirationIn=" + (int)(waitTime.Value.TotalSeconds * 1.05) //add 5%
                                   + "&restartIn=" + (int)(restartTaskAfterTime?.TotalSeconds ?? 0)
                                   + "&callbackData=" + System.Net.WebUtility.UrlEncode(callBackDataString);

                    fullUrl = ApiUrl + "addTask.ashx?" + param;
                    var resbyte = await wc.DownloadDataTaskAsync(fullUrl);

                    var res = System.Text.Encoding.UTF8.GetString(resbyte);
                    Newtonsoft.Json.Linq.JToken json = Newtonsoft.Json.Linq.JToken.Parse(res);

                    if (json["taskid"] != null)
                    {
                        taskId = json["taskid"].ToString();
                    }
                    else
                    {
                        logger.Error($"ExtApi.TextFromUrlAsync API Exception\nUrl:{url.AbsoluteUri}\n content: " + res);
                        return(new Result()
                        {
                            Id = taskId, IsValid = Result.ResultStatus.Invalid, Error = json["error"].Value <string>()
                        });
                    }
                }

                if (callBackData == null)
                {
                    return(WaitingForResult(apikey, taskId, maxWaitingTime ?? defaultWaitingTime));
                }
                else
                {
                    return new Result()
                           {
                               Id = taskId, IsValid = Result.ResultStatus.InQueueWithCallback
                           }
                };
            }
            catch (System.Net.WebException e)
            {
                logger.Debug($"called ext API TextFromFile {fullUrl}.\n " + ApiUrl, e);
                throw new ApiException("called ext API ", e);
            }
            catch (Exception e)
            {
                logger.Error($"exception API TextFromFile {fullUrl}.\n " + ApiUrl, e);
                throw new ApiException("exception API TextFromFile  ", e);
            }
            finally
            {
                //TempIO.DeleteFile(tmpFile);
            }
        }