Esempio n. 1
0
 IEnumerator Download(Request request, DiskCacheOperation handle)
 {
         request.Send ();
         while (!request.isDone)
                 yield return new WaitForEndOfFrame ();
         handle.isDone = true;
 }
Esempio n. 2
0
 public DiskCacheOperation Fetch (Request request)
 {
         var handle = new DiskCacheOperation ();
         handle.request = request;
         StartCoroutine (Download (request, handle));
         return handle;
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        public DiskCacheOperation Fetch(Request request)
        {
            var handle = new DiskCacheOperation();

            handle.request = request;
            StartCoroutine(Download(request, handle));
            return(handle);
        }
Esempio n. 5
0
 IEnumerator Download(Request request, DiskCacheOperation handle)
 {
     request.Send();
     while (!request.isDone)
     {
         yield return(new WaitForEndOfFrame());
     }
     handle.isDone = true;
 }
Esempio n. 6
0
        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);
        }