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); } } }); }
/// <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); }
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; } }); }
/// <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); }
/// <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); }
/// <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); }
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); }); }