IEnumerator Download(Request request, DiskCacheOperation handle) { request.Send (); while (!request.isDone) yield return new WaitForEndOfFrame (); handle.isDone = true; }
public DiskCacheOperation Fetch (Request request) { var handle = new DiskCacheOperation (); handle.request = request; StartCoroutine (Download (request, handle)); return handle; }
private IEnumerator DownloadAndSave(Request request, string filename, DiskCacheOperation handle) { bool useCachedVersion = File.Exists(filename); Action <Request> callback = request.completedCallback; request.Send(); while (!request.isDone) { yield return(new WaitForEndOfFrame()); } if (request.exception == null && request.response != null && request.response.status == 200) { string header = request.response.GetHeader("etag"); if (header != "") { File.WriteAllBytes(filename, request.response.bytes); File.WriteAllText(filename + ".etag", header); } useCachedVersion = false; } if (useCachedVersion) { if (request.exception != null) { Debug.LogWarning("Using cached version due to exception:" + request.exception); request.exception = null; } request.response.status = 304; request.response.bytes = File.ReadAllBytes(filename); request.isDone = true; } handle.isDone = true; callback?.Invoke(request); }
public DiskCacheOperation Fetch(Request request) { var handle = new DiskCacheOperation(); handle.request = request; StartCoroutine(Download(request, handle)); return(handle); }
IEnumerator Download(Request request, DiskCacheOperation handle) { request.Send(); while (!request.isDone) { yield return(new WaitForEndOfFrame()); } handle.isDone = true; }
public DiskCacheOperation Fetch(Request request) { string text = ""; using (MD5 mD = MD5.Create()) { byte[] array = mD.ComputeHash(Encoding.ASCII.GetBytes(request.uri.ToString())); foreach (byte b in array) { text += b.ToString("X2"); } } string text2 = Path.Combine(cachePath, text); if (File.Exists(text2) && File.Exists(text2 + ".etag")) { request.SetHeader("If-None-Match", File.ReadAllText(text2 + ".etag")); } DiskCacheOperation diskCacheOperation = new DiskCacheOperation(); diskCacheOperation.request = request; StartCoroutine(DownloadAndSave(request, text2, diskCacheOperation)); return(diskCacheOperation); }