//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; } }
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 }); }