< Summary

Class:DCL.WebRequestAsyncOperation
Assembly:WebRequestControllerInterfaces
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/WebRequest/Interfaces/WebRequestAsyncOperation.cs
Covered lines:31
Uncovered lines:2
Coverable lines:33
Total lines:109
Line coverage:93.9% (31 of 33)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
WebRequestAsyncOperation(...)0%110100%
SetAsCompleted(...)0%330100%
Abort()0%330100%
Dispose()0%220100%
GetResultData()0%2100%
SetNewWebRequest(...)0%2100%
SendWebRequest()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/WebRequest/Interfaces/WebRequestAsyncOperation.cs

#LineLine coverage
 1using System;
 2using UnityEngine;
 3using UnityEngine.Networking;
 4
 5namespace DCL
 6{
 7    /// <summary>
 8    /// Our custom request async operation to be used with the WebRequestController.
 9    /// </summary>
 10    public class WebRequestAsyncOperation : CustomYieldInstruction, IWebRequestAsyncOperation
 11    {
 12        /// <summary>
 13        /// Event that will be invoked when the request has been completed.
 14        /// </summary>
 15        public event Action<WebRequestAsyncOperation> completed;
 16
 17        /// <summary>
 18        /// WebRequest that is being managed.
 19        /// </summary>
 569920        public UnityWebRequest webRequest { get; private set; }
 21
 94422        public UnityWebRequestAsyncOperation asyncOp { get; private set; }
 23
 24        /// <summary>
 25        /// Returns true after the request has finished communicating with the remote server.
 26        /// </summary>
 348027        public bool isDone { get; private set; }
 28
 29        /// <summary>
 30        /// Returns true if the request was successfully finished.
 31        /// </summary>
 217832        public bool isSucceeded { get; private set; }
 33
 34        /// <summary>
 35        /// Returns true if webRequest has been disposed (webRequest = null).
 36        /// </summary>
 154837        public bool isDisposed => webRequest == null;
 38
 39        /// <summary>
 40        /// Set to true for disposing the request just after it has been completed.
 41        /// </summary>
 128742        public bool disposeOnCompleted { get; set; }
 43
 98244        public override bool keepWaiting { get { return !isDone; } }
 45
 47246        public WebRequestAsyncOperation(UnityWebRequest webRequest)
 47        {
 47248            this.webRequest = webRequest;
 47249            isDone = false;
 47250            isSucceeded = false;
 47251            disposeOnCompleted = true;
 47252        }
 53
 54        /// <summary>
 55        /// Mark the request as completed and throw the corresponding event.
 56        /// </summary>
 57        /// <param name="success">True if the request was successfully ended.</param>
 58        public void SetAsCompleted(bool success)
 59        {
 34360            completed?.Invoke(this);
 34361            isDone = true;
 34362            isSucceeded = success;
 63
 34364            if (disposeOnCompleted)
 465                Dispose();
 34366        }
 67
 68        /// <summary>
 69        /// If in progress, halts the request as soon as possible.
 70        /// </summary>
 71        public void Abort()
 72        {
 58173            if (webRequest == null || isDone)
 42674                return;
 75
 15576            webRequest.Abort();
 15577        }
 78
 79        /// <summary>
 80        /// Signals that this request is no longer being used, and should clean up any resources it is using (it aborts 
 81        /// </summary>
 82        public void Dispose()
 83        {
 58184            Abort();
 85
 58186            if (webRequest == null)
 11787                return;
 88
 46489            webRequest.Dispose();
 46490            webRequest = null;
 46491        }
 92
 93        /// <summary>
 94        /// Returns the data that has been downloaded as a byte array, if not done or success it will return an empty ar
 95        /// </summary>
 96        public byte[] GetResultData()
 97        {
 098            return webRequest.downloadHandler.data;
 99        }
 100
 0101        internal void SetNewWebRequest(UnityWebRequest newRequest) { webRequest = newRequest; }
 102
 103        public UnityWebRequestAsyncOperation SendWebRequest()
 104        {
 472105            asyncOp = webRequest.SendWebRequest();
 472106            return asyncOp;
 107        }
 108    }
 109}