コード例 #1
0
        public void Test_1_6_Upload_NullCallback()
        {
            KiiAnalytics.Initialize("appID004", "appKey", KiiAnalytics.Site.JP, "dev004");
            KiiEvent ev = KiiAnalytics.NewEvent("type1");

            ev["page"]  = 1;
            ev["label"] = "OK";
            Assert.IsFalse(ev.Sent);

            // set mock
            MockHttpClientFactory factory = new MockHttpClientFactory();

            KiiAnalytics.AsyncHttpClientFactory = factory;
            MockHttpClient client = factory.Client;

            client.AddResponse(204, "");

            // async upload
            KiiEventCallback callback = null;

            KiiAnalytics.Upload(callback, ev);

            // verify event uploaded
            Assert.IsTrue(ev.Sent);
        }
コード例 #2
0
 private static void InvokeUploadCallback(KiiEventCallback callback, Exception e)
 {
     if (callback != null)
     {
         callback(e);
     }
 }
コード例 #3
0
        private static void ExecUpload(KiiHttpClientFactory httpClientFactory, KiiEventCallback callback, KiiEvent[] eventList)
        {
            JsonArray array = new JsonArray();

            foreach (KiiEvent ev in eventList)
            {
                if (ev == null)
                {
                    throw new ArgumentException(ErrorInfo.KIIANALYTICS_EVENT_NULL);
                }
                if (ev.Sent)
                {
                    throw new ArgumentException(ErrorInfo.KIIANALYTICS_EVENT_ALREADY_SENT);
                }
                if (ev.GetType() == typeof(KiiEvent.NullKiiEvent))
                {
                    continue;
                }
                array.Put(ev.ConvertToJsonObject(INSTANCE.mDeviceID));
            }

            string url  = KiiAnalytics.BaseUrl + "/apps/" + KiiAnalytics.AppID + "/events";
            string body = array.ToString();

            KiiHttpClient client = httpClientFactory.Create(url, KiiAnalytics.AppID, KiiAnalytics.AppKey, KiiHttpMethod.POST);

            client.ContentType = "application/vnd.kii.EventRecordList+json";
            client.Body        = body;

            client.SendRequest((ApiResponse response, Exception e) => {
                if (e != null)
                {
                    if (!(e is CloudException))
                    {
                        InvokeUploadCallback(callback, e);
                    }
                    else
                    {
                        CloudException exp = (CloudException)e;
                        InvokeUploadCallback(callback, new EventUploadException(exp.Status, exp.Body, eventList));
                    }
                    return;
                }
                if (response.Status == 200)
                {
                    try {
                        List <KiiEvent> errorEventList = ParsePartialSuccessResponse(response.Body, eventList);
                        InvokeUploadCallback(callback, new EventUploadException(response.Status, response.Body, errorEventList));
                    } catch (Exception ex) {
                        InvokeUploadCallback(callback, ex);
                    }
                    return;
                }
                foreach (KiiEvent ev in eventList)
                {
                    ev.Sent = true;
                }
                InvokeUploadCallback(callback, null);
            });
        }
コード例 #4
0
 /// <summary>
 /// Asynchronously upload events to KiiCloud.
 /// </summary>
 /// <remarks>
 /// This API sends a request to KiiCloud.
 /// </remarks>
 /// <param name='callback'>
 /// KiiEventCallback.
 /// </param>
 /// <param name='eventList'>
 /// Event list to upload.
 /// </param>
 /// <exception cref="ArgumentException">
 /// Is thrown when
 /// <list type="bullet">
 /// <item><term>eventList is null.</term></item>
 /// <item><term>Any event in the list has alredy sent to KiiCloud.</term></item>
 /// <item><term>eventList has more than 50 KiiEvent</term></item>
 /// </list>
 /// </exception>
 public static void Upload(KiiEventCallback callback, params KiiEvent[] eventList)
 {
     if (eventList == null || eventList.Length == 0)
     {
         throw new ArgumentException(ErrorInfo.KIIANALYTICS_EVENT_NULL);
     }
     // length of eventlist must be within 50
     if (eventList.Length > 50)
     {
         throw new ArgumentException(ErrorInfo.KIIANALYTICS_EVENT_TOO_LONG);
     }
     ExecUpload(KiiAnalytics.AsyncHttpClientFactory, callback, eventList);
 }