public IEnumerator SendAnalyticsReport(GsdkAnalyticsEventType eventType, string data, string customEndPoint = null)
        {
            switch (eventType)
            {
            case GsdkAnalyticsEventType.LevelReport:
                BuildAnalyticsLevelReport();
                SetHeaders(data.Length);
                LogRequest("AnalyticsLevelReport", data);
                break;

            case GsdkAnalyticsEventType.ReviveReport:
                BuildAnalyticsReviveReport();
                SetHeaders(data.Length);
                LogRequest("AnalyticsReviveReport", data);
                break;

            case GsdkAnalyticsEventType.CinemaReport:
                BuildAnalyticsCinemaReport();
                SetHeaders(data.Length);
                LogRequest("AnalyticsCinemaReport", data);
                break;

            case GsdkAnalyticsEventType.CustomReport:
                if (string.IsNullOrEmpty(customEndPoint))
                {
                    Debug.LogError("Custom end point missing for a custom analytics report");
                    yield break;
                }
                _requestUrl = String.Format("{0}{1}", _url, customEndPoint);
                SetHeaders(data.Length);
                LogRequest(string.Format("{0}(endPoint:{1})", "AnalyticsCustomReport", customEndPoint), data);
                break;

            default:
                break;
            }

            WWW wwwRequest = new WWW(_requestUrl, _encoding.GetBytes(data), _headers);

            yield return(wwwRequest);

            yield return(_coroutineFactory.StartCoroutine(() => EvaluateRequestStatus(wwwRequest)));
        }
 private void LogGsdkEvent(GsdkAnalyticsEventType eventType, JsonData data, string customEndPoint = null)
 {
     routineRunner.StartCoroutine(_connectionHandler.SendAnalyticsReport(eventType, data.ToJson(), customEndPoint));
 }