Example #1
0
        private void ExecExists(KiiHttpClientFactory factory, KiiGenericsCallback <Boolean?> callback)
        {
            if (callback == null)
            {
                throw new ArgumentNullException("KiiGenericsCallback must not be null");
            }
            try
            {
                Utils.CheckInitialize(true);
            }
            catch (Exception e)
            {
                callback(null, e);
                return;
            }
            KiiHttpClient client = factory.Create(Url, Kii.AppId, Kii.AppKey, KiiHttpMethod.HEAD);

            KiiCloudEngine.SetAuthBearer(client);
            client.SendRequest((ApiResponse response, Exception e) => {
                if (e == null)
                {
                    callback(true, null);
                }
                else
                {
                    if (e is NotFoundException)
                    {
                        callback(false, null);
                    }
                    else
                    {
                        callback(null, e);
                    }
                }
            });
        }
Example #2
0
 /// <summary>
 /// Asynchronous call for <see cref="Exists()"/>.
 /// </summary>
 /// <param name="callback">Callback.</param>
 /// <exception cref='CloudException'>
 /// Is thrown when server sends error response.
 /// </exception>
 /// <remarks>
 /// This api sends a request to server.
 /// </remarks>
 public void Exists(KiiGenericsCallback <Boolean?> callback)
 {
     this.ExecExists(Kii.AsyncHttpClientFactory, callback);
 }
Example #3
0
        private static void ExecRegisterWithID(string id, string name, IList <KiiUser> members, KiiHttpClientFactory factory, KiiGenericsCallback <KiiGroup> callback)
        {
            try
            {
                Utils.CheckInitialize(true);
            }
            catch (Exception e)
            {
                callback(null, e);
                return;
            }
            if (String.IsNullOrEmpty(id))
            {
                callback(null, new ArgumentException("id is null or empty."));
                return;
            }
            if (!Utils.ValidateGroupID(id))
            {
                callback(null, new ArgumentException("Invalid groupID format. " + id));
                return;
            }
            if (String.IsNullOrEmpty(name))
            {
                callback(null, new ArgumentException("name is null or empty."));
                return;
            }

            String        ownerId = Kii.CurrentUser.ID;
            string        url     = Utils.Path(Kii.BaseUrl, "apps", Kii.AppId, "groups", id);
            KiiHttpClient client  = factory.Create(url, Kii.AppId, Kii.AppKey, KiiHttpMethod.PUT);

            KiiCloudEngine.SetAuthBearer(client);
            client.Accept = "application/vnd.kii.GroupCreationResponse+json";

            JsonObject request = new JsonObject();

            try
            {
                request.Put("name", name);
                request.Put("owner", ownerId);
                if (members != null && members.Count > 0)
                {
                    JsonArray memberIDs = new JsonArray();
                    foreach (KiiUser member in members)
                    {
                        if (!Utils.IsEmpty(member.ID))
                        {
                            memberIDs.Put(member.ID);
                        }
                    }
                    request.Put("members", memberIDs);
                }
            }
            catch (JsonException e)
            {
                if (callback != null)
                {
                    callback(null, new SystemException("unexpected error!", e));
                }
                return;
            }

            client.ContentType = "application/vnd.kii.GroupCreationRequest+json";

            // send Request
            client.SendRequest(request.ToString(), (ApiResponse response, Exception e) =>
            {
                if (e != null)
                {
                    if (callback != null)
                    {
                        callback(null, new GroupOperationException(e.Message, e, members, null));
                    }
                    return;
                }
                // parse response
                try
                {
                    JsonObject respObj = new JsonObject(response.Body);
                    KiiGroup group     = new KiiGroup(name, members);
                    group.mId          = respObj.GetString("groupID");
                    group.mOwnerId     = ownerId;
                    if (callback != null)
                    {
                        callback(group, null);
                    }
                }
                catch (JsonException)
                {
                    if (callback != null)
                    {
                        callback(null, new IllegalKiiBaseObjectFormatException(response.Body));
                    }
                    return;
                }
            });
        }
Example #4
0
 /// <summary>
 /// Asynchronous call for <see cref="ListTopics(string)"/>.
 /// </summary>
 /// <param name="paginationKey">
 /// Specifies the pagination key that is obtained by <see cref="KiiListResult{T}.PaginationKey"/>.
 /// If specified null or empty, it's same as the <see cref="ListTopics(KiiGenericsCallback{KiiListResult{KiiTopic}})"/>.
 /// </param>
 /// <param name="callback">Callback.</param>
 /// <exception cref='CloudException'>
 /// Is thrown when server sends error response.
 /// </exception>
 /// <remarks>
 /// This api sends a request to server.
 /// </remarks>
 public void ListTopics(string paginationKey, KiiGenericsCallback <KiiListResult <KiiTopic> > callback)
 {
     ExecListTopics(Kii.AsyncHttpClientFactory, paginationKey, callback);
 }
Example #5
0
 /// <summary>
 /// Asynchronous call for <see cref="ListTopics()"/>.
 /// </summary>
 /// <param name="callback">Callback.</param>
 /// <exception cref='CloudException'>
 /// Is thrown when server sends error response.
 /// </exception>
 /// <remarks>
 /// This api sends a request to server.
 /// </remarks>
 public void ListTopics(KiiGenericsCallback <KiiListResult <KiiTopic> > callback)
 {
     ListTopics(null, callback);
 }
Example #6
0
 /// <summary>
 /// Creates new group own by current user on Kii Cloud with specified ID.
 /// </summary>
 /// <param name="id">ID of the KiiGroup.</param>
 /// <param name="name">Name of the KiiGroup.</param>
 /// <param name="members">Members of the group. Group owner will be added as a group member no matter owner is in the list or not.</param>
 /// <param name="callback">Callback</param>
 public static void RegisterGroupWithID(String id, String name, IList <KiiUser> members, KiiGenericsCallback <KiiGroup> callback)
 {
     ExecRegisterWithID(id, name, members, Kii.AsyncHttpClientFactory, callback);
 }
Example #7
0
        private void ExecListTopics(KiiHttpClientFactory factory, string paginationKey, KiiGenericsCallback <KiiListResult <KiiTopic> > callback)
        {
            if (callback == null)
            {
                throw new ArgumentNullException("KiiGenericsCallback must not be null");
            }
            try
            {
                Utils.CheckInitialize(true);
            }
            catch (Exception e)
            {
                callback(null, e);
                return;
            }
            if (Utils.IsEmpty(ID))
            {
                callback(null, new InvalidOperationException(ErrorInfo.KIIGROUP_NO_ID));
                return;
            }
            String url = Utils.Path(Url, "topics");

            if (!String.IsNullOrEmpty(paginationKey))
            {
                url = url + "?paginationKey=" + Uri.EscapeUriString(paginationKey);
            }
            KiiHttpClient client = factory.Create(url, Kii.AppId, Kii.AppKey, KiiHttpMethod.GET);

            KiiCloudEngine.SetAuthBearer(client);
            client.SendRequest((ApiResponse response, Exception e) => {
                if (e != null)
                {
                    callback(null, e);
                    return;
                }
                JsonObject json         = new JsonObject(response.Body);
                String newPaginationKey = json.OptString("paginationKey", null);
                JsonArray array         = json.GetJsonArray("topics");
                List <KiiTopic> topics  = new List <KiiTopic>();
                for (int i = 0; i < array.Length(); i++)
                {
                    topics.Add(this.Topic(array.GetJsonObject(i).GetString("topicID")));
                }
                callback(new KiiListResult <KiiTopic>(topics, newPaginationKey), null);
            });
        }