Exemplo n.º 1
0
            //private async Task<bool> Load()
            private async Task Load()
            {
                _urlCachePath = _httpCacheManager._urlCache.GetUrlPathResult(_request, _request.CacheSubDirectory);
                string cacheFile = _urlCachePath.Path;

                if (_request.ReloadFromWeb || !zFile.Exists(cacheFile))
                {
                    // cache file dont exists, create 2 cache files : file with content response, file with request response
                    //TraceLevel.WriteLine(1, $"Load from web \"{_httpRequest.Url}\" ({_httpRequest.Method})");
                    //Http_v3 http2 = CreateHttp(httpRequest);
                    //http2.LoadToFile(urlPath);
                    //http2.SaveRequest(zpath.PathSetExtension(urlPath, ".request.json"));
                    using (Http_v5 http = new Http_v5(_request, _httpCacheManager._httpManager))
                    {
                        zfile.CreateFileDirectory(cacheFile);
                        HttpResult_v5 result = await http.LoadToFile(cacheFile);

                        //if (result.Success)
                        //{
                        _httpMessageResult           = http.GetHttpMessageResult();
                        _httpMessageResult.CacheFile = _urlCachePath.SubPath;
                        _httpMessageResult.zSave(zpath.PathSetExtension(cacheFile, ".request.json"), jsonIndent: true);
                        _success     = result.Success;
                        _loadFromWeb = true;
                        //return true;
                        //}
                        //else
                        //    return false;
                    }
                    //trace = true;
                }
                else
                {
                    // cache file exists, load request from cache file
                    _loadFromCache = true;
                    TraceLevel.WriteLine(1, "Load from cache \"{0}\"", _urlCachePath.Path);
                    string requestFile = zpath.PathSetExtension(cacheFile, ".request.json");
                    if (!zFile.Exists(requestFile))
                    {
                        throw new PBException($"request file not found \"{requestFile}\"");
                    }
                    _httpMessageResult = zMongo.ReadFileAs <HttpMessageResult>(requestFile);
                    _success           = _httpMessageResult.Response.StatusCode == 200;
                    //return true;
                }
            }
Exemplo n.º 2
0
        private HttpResult <TData> Load <TData>(HttpRequest httpRequest, Func <Http_v2, TData> loadData, string subDirectory = null)
        {
            bool    success       = false;
            bool    loadFromWeb   = false;
            bool    loadFromCache = false;
            bool    trace         = false;
            Http_v2 http          = null;
            TData   data          = default(TData);

            try
            {
                if (_urlCache != null)
                {
                    //HttpResult<UrlCachePathResult> cachePathResult = LoadHttpToCache(httpRequest);
                    //httpRequest.UrlCachePath = cachePathResult.Data;

                    UrlCachePathResult urlCachePath = _urlCache.GetUrlPathResult(httpRequest, subDirectory);
                    string             urlPath      = urlCachePath.Path;
                    if (httpRequest.ReloadFromWeb || !zFile.Exists(urlPath))
                    {
                        TraceLevel.WriteLine(1, "Load \"{0}\" ({1})", httpRequest.Url, httpRequest.Method);
                        Http_v2 http2 = CreateHttp(httpRequest);
                        http2.LoadToFile(urlPath, true);
                        loadFromWeb = true;
                        trace       = true;
                    }
                    else
                    {
                        loadFromCache = true;
                    }
                    httpRequest.UrlCachePath = urlCachePath;
                }
                else
                {
                    loadFromWeb = true;
                }

                if (!trace)
                {
                    TraceLevel.WriteLine(1, "Load \"{0}\" ({1})", httpRequest.UrlCachePath != null ? httpRequest.UrlCachePath.Path : httpRequest.Url, httpRequest.Method);
                }

                http = CreateHttp(httpRequest);

                //text = http.LoadText();
                data    = loadData(http);
                success = true;
            }
            catch (Exception ex)
            {
                if (_traceException)
                {
                    Trace.WriteLine("{0:dd/MM/yyyy HH:mm:ss} Error : loading \"{1}\" ({2}) {3}", DateTime.Now, httpRequest.UrlCachePath != null ? httpRequest.UrlCachePath.Path : httpRequest.Url, httpRequest.Method, ex.Message);
                }
                else
                {
                    throw;
                }
            }
            return(new HttpResult <TData> {
                Success = success, LoadFromWeb = loadFromWeb, LoadFromCache = loadFromCache, Http = http, Data = data
            });
        }