public void Test_0104_initialize_id_key_Site_2times_same() { Kii.Initialize("ee573743", "5eb7b8bc1b4e4c98e659431c69cef8d4", "https://api.kii.com/api"); Assert.AreEqual("ee573743", Kii.AppId); Assert.AreEqual("5eb7b8bc1b4e4c98e659431c69cef8d4", Kii.AppKey); Assert.AreEqual("https://api.kii.com/api", Kii.BaseUrl); KiiCloudEngine.UpdateAccessToken("accesstoken"); // 2 times Kii.Initialize("ee573743", "5eb7b8bc1b4e4c98e659431c69cef8d4", "https://api.kii.com/api"); Assert.AreEqual("ee573743", Kii.AppId); Assert.AreEqual("5eb7b8bc1b4e4c98e659431c69cef8d4", Kii.AppKey); Assert.AreEqual("https://api.kii.com/api", Kii.BaseUrl); Assert.AreEqual("accesstoken", KiiCloudEngine.AccessToken); }
private void ExecChangeName(string name, KiiHttpClientFactory factory, KiiGroupCallback callback) { Utils.CheckInitialize(true); if (Utils.IsEmpty(name)) { if (callback != null) { callback(this, new ArgumentException("provided name is null")); } return; } string id = ID; if (Utils.IsEmpty(id)) { if (callback != null) { callback(this, new InvalidOperationException(ErrorInfo.KIIGROUP_NO_ID)); } return; } string url = Utils.Path(Url, "name"); KiiHttpClient client = factory.Create(url, Kii.AppId, Kii.AppKey, KiiHttpMethod.PUT); KiiCloudEngine.SetAuthBearer(client); client.ContentType = "text/plain"; // send request client.SendRequest(name, (ApiResponse response, Exception e) => { if (e != null) { if (callback != null) { callback(this, e); } return; } this.groupName = name; if (callback != null) { callback(this, null); } }); }
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); }); }
private void ExecUnsubscribe(KiiSubscribable target, KiiHttpClientFactory factory, KiiSubscriptionCallback callback) { if (callback == null) { throw new ArgumentNullException("KiiSubscriptionCallback must not be null"); } if (target == null) { callback(target, new ArgumentNullException("KiiSubscribable must not be null")); return; } Utils.CheckInitialize(true); KiiHttpClient client = factory.Create(ToUrl(target), Kii.AppId, Kii.AppKey, KiiHttpMethod.DELETE); KiiCloudEngine.SetAuthBearer(client); client.SendRequest((ApiResponse response, Exception e) => { callback(target, e); }); }
public void Test_0003_initialize_2times_same() { Kii.Initialize("ee573743", "5eb7b8bc1b4e4c98e659431c69cef8d4", Kii.Site.US); Assert.AreEqual("ee573743", Kii.AppId); Assert.AreEqual("5eb7b8bc1b4e4c98e659431c69cef8d4", Kii.AppKey); Assert.AreEqual("https://api.kii.com/api", Kii.BaseUrl); KiiUser user = KiiUser.UserWithID("dummyID"); _KiiInternalUtils.SetCurrentUser(user); KiiCloudEngine.UpdateAccessToken("accesstoken"); // same id and key Kii.Initialize("ee573743", "5eb7b8bc1b4e4c98e659431c69cef8d4", Kii.Site.US); Assert.AreEqual("ee573743", Kii.AppId); Assert.AreEqual("5eb7b8bc1b4e4c98e659431c69cef8d4", Kii.AppKey); Assert.AreEqual("https://api.kii.com/api", Kii.BaseUrl); Assert.AreEqual(user, KiiUser.CurrentUser); Assert.AreEqual("accesstoken", KiiCloudEngine.AccessToken); }
private void ExecSendMessage(KiiPushMessage message, KiiHttpClientFactory factory, KiiPushMessageCallback callback) { if (callback == null) { throw new ArgumentNullException("KiiPushMessageCallback must not be null"); } if (message == null) { callback(message, new ArgumentNullException("KiiPushMessage must not be null")); return; } Utils.CheckInitialize(false); KiiHttpClient client = factory.Create(MessageUrl, Kii.AppId, Kii.AppKey, KiiHttpMethod.POST); KiiCloudEngine.SetAuthBearer(client); client.ContentType = "application/vnd.kii.SendPushMessageRequest+json"; client.SendRequest(message.ToJson().ToString(), (ApiResponse response, Exception e) => { callback(message, e); }); }
public void UpdateByDeletedPseudoUserTest() { KiiUser.RegisterAsPseudoUser(null); UserFields userFields = new UserFields(); userFields.Displayname = "disp"; userFields.Country = "JP"; userFields["age"] = 30; userFields.RemoveFromServer("birthday"); string currentUserId = Kii.CurrentUser.ID; string currentUserAccessToken = KiiUser.AccessToken; KiiUser.CurrentUser.Delete(); Kii.CurrentUser = KiiUser.GetById(currentUserId); KiiCloudEngine.UpdateAccessToken(currentUserAccessToken); KiiUser.CurrentUser.Update(userFields); }
private void ExecDelete(KiiHttpClientFactory factory, KiiGroupCallback callback) { Utils.CheckInitialize(true); if (Utils.IsEmpty(ID)) { if (callback != null) { callback(this, new InvalidOperationException(ErrorInfo.KIIGROUP_NO_ID)); } return; } KiiHttpClient client = factory.Create(Url, Kii.AppId, Kii.AppKey, KiiHttpMethod.DELETE); KiiCloudEngine.SetAuthBearer(client); client.Accept = "application/vnd.kii.GroupRetrievalResponse+json"; // send request client.SendRequest((ApiResponse response, Exception e) => { if (e != null) { if (callback != null) { callback(this, e); } return; } // clear id and members mId = null; mOwnerId = null; addUsers.Clear(); removeUsers.Clear(); if (callback != null) { callback(this, null); } }); }
private void ExecUninstall(string deviceID, DeviceType deviceType, KiiHttpClientFactory factory, KiiPushInstallationCallback callback) { if (callback == null) { throw new ArgumentNullException("KiiPushInstallationCallback must not be null"); } if (Utils.IsEmpty(deviceID)) { callback(new ArgumentException(ErrorInfo.KIIPUSHINSTALLATION_DEVICE_ID_NULL)); return; } Utils.CheckInitialize(true); string url = Utils.Path(Kii.BaseUrl, "apps", Kii.AppId, "installations", Enum.GetName(typeof(DeviceType), deviceType) + ":" + deviceID); KiiHttpClient client = factory.Create(url, Kii.AppId, Kii.AppKey, KiiHttpMethod.DELETE); KiiCloudEngine.SetAuthBearer(client); client.SendRequest((ApiResponse response, Exception e) => { callback(e); }); }
public void PutIdentityByDeletedUserTest() { string unixTime = CurrentTimeMillis().ToString(); string username = "******" + unixTime; string email = username + "@kii.com"; string phone = "+874" + unixTime.Substring(unixTime.Length - 9, 9); KiiUser.RegisterAsPseudoUser(null); IdentityData.Builder builder = IdentityData.Builder.CreateWithName(username); builder.WithEmail(email); builder.WithPhone(phone); IdentityData identityData = builder.Build(); string currentUserId = Kii.CurrentUser.ID; string currentUserAccessToken = KiiUser.AccessToken; KiiUser.CurrentUser.Delete(); Kii.CurrentUser = KiiUser.GetById(currentUserId); KiiCloudEngine.UpdateAccessToken(currentUserAccessToken); KiiUser.CurrentUser.PutIdentity(identityData, null, "123ABC"); }
/// <summary> /// Initialize KiiSDK appID, appKey, deviceID, serverUrl and KiiHttpClientFactory. /// </summary> /// <remarks> /// This method is intended for use in internal purposes. Do not use it to initialize your application. /// </remarks> /// <param name='appId'> /// Application ID found in your Kii developer console /// </param> /// <param name='appKey'> /// Application key found in your Kii developer console /// </param> /// <param name='serverUrl'> /// Server URL. /// </param> /// <param name='syncFactory'> /// Http client factory for blocking api. /// </param> /// <param name='asyncFactory'> /// Http client factory for non-blocking api. /// </param> /// <exception cref='ArgumentException'> /// Is thrown when an argument passed to a method is invalid. /// </exception> public static void Initialize(string appId, string appKey, string serverUrl, KiiHttpClientFactory syncFactory, KiiHttpClientFactory asyncFactory) { if (Utils.IsEmpty(serverUrl)) { throw new ArgumentException(ErrorInfo.KII_SERVER_URL_IS_NULL); } if (!Uri.IsWellFormedUriString(serverUrl, UriKind.Absolute)) { throw new ArgumentException(ErrorInfo.KII_INVALID_SERVER_URL); } if (INSTANCE != null && Kii.AppId == appId && Kii.AppKey == appKey && Kii.BaseUrl == serverUrl) { return; } KiiCloudEngine.ClearAccessToken(); INSTANCE = new Kii(appId, appKey); INSTANCE.mBaseURL = serverUrl; INSTANCE.mKiiAppsBaseURL = CreateKiiAppsBaseURL(appId, serverUrl); INSTANCE.clientFactory = syncFactory; INSTANCE.asyncClientFactory = asyncFactory; }
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); } } }); }
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> /// Updates the access token. /// </summary> /// <param name="accessToken">Access token.</param> /// <remarks>Do not use it from your application.</remarks> public static void UpdateAccessToken(string accessToken) { KiiCloudEngine.UpdateAccessToken(accessToken); }
public void Test_0502_CreateGroup_with_member() { // Create test user for group owner string userID = TextUtils.generateUUID(); KiiUser user = KiiUser.CreateByUri(new Uri("kiicloud://users/" + userID)); SDKTestHack.SetField(Kii.Instance, "mLoginUser", user); string authToken = TextUtils.generateUUID(); KiiCloudEngine.UpdateAccessToken(authToken); // Prepare KiiUser for member string memberID = TextUtils.generateUUID(); KiiUser member = KiiUser.CreateByUri(new Uri("kiicloud://users/" + memberID)); // Prepare group string groupName = TextUtils.randomAlphaNumeric(10); KiiGroup group = Kii.Group(groupName, new List <KiiUser>() { member }); // Check value HashSet <KiiUser> addUsers = (HashSet <KiiUser>)SDKTestHack.GetField(group, "addUsers"); HashSet <KiiUser> removeUsers = (HashSet <KiiUser>)SDKTestHack.GetField(group, "removeUsers"); Assert.AreEqual(1, addUsers.Count); Assert.AreEqual(0, removeUsers.Count); // Prepare mock response for creating group string groupID = TextUtils.randomAlphaNumeric(26); JsonObject resEntity = new JsonObject(new Dictionary <string, object>() { { "groupID", groupID }, { "notFoundUsers", new JsonArray() } }); client.AddResponse(201, resEntity.ToString()); // Save group group.Save(); // Verify request Assert.AreEqual(1, client.RequestUrl.Count); Assert.AreEqual(1, client.RequestHeader.Count); string requestUrl = AppUtil.getUrlOfSite(AppConst.APP_SITE, AppConst.APP_ID, "groups"); Assert.AreEqual(requestUrl, client.RequestUrl[0]); Assert.AreEqual("POST", client.RequestMethod[0].ToString()); IList <MockHttpHeaderList> headers = client.RequestHeader; Assert.AreEqual(AppConst.APP_ID, client.RequestHeader[0]["X-Kii-AppID"]); Assert.AreEqual(AppConst.APP_KEY, client.RequestHeader[0]["X-Kii-AppKey"]); Assert.AreEqual("Bearer " + authToken, client.RequestHeader[0]["Authorization"]); JsonObject requestBody = new JsonObject(client.RequestBody[0]); Assert.AreEqual(3, requestBody.Length()); Assert.AreEqual(groupName, requestBody.GetString("name")); Assert.AreEqual(userID, requestBody.GetString("owner")); Assert.AreEqual(1, requestBody.GetJsonArray("members").Length()); Assert.AreEqual(memberID, requestBody.GetJsonArray("members").GetString(0)); // Verify Assert.AreEqual(groupID, group.ID); Assert.AreEqual(user.ID, group.Owner.ID); addUsers = (HashSet <KiiUser>)SDKTestHack.GetField(group, "addUsers"); removeUsers = (HashSet <KiiUser>)SDKTestHack.GetField(group, "removeUsers"); Assert.AreEqual(0, addUsers.Count); Assert.AreEqual(0, removeUsers.Count); }
private void SaveToCloud(KiiHttpClientFactory factory, KiiGroupCallback callback) { Utils.CheckInitialize(true); mOwnerId = Kii.CurrentUser.ID; string url = Utils.Path(Kii.BaseUrl, "apps", Kii.AppId, "groups"); KiiHttpClient client = factory.Create(url, Kii.AppId, Kii.AppKey, KiiHttpMethod.POST); KiiCloudEngine.SetAuthBearer(client); client.Accept = "application/vnd.kii.GroupCreationResponse+json"; JsonObject obj = new JsonObject(); try { obj.Put("name", groupName); obj.Put("owner", mOwnerId); obj.Put("members", UserIds()); } catch (JsonException e1) { if (callback != null) { callback(this, new SystemException("unexpected error!", e1)); } return; } client.ContentType = "application/vnd.kii.GroupCreationRequest+json"; // send Request client.SendRequest(obj.ToString(), (ApiResponse response, Exception e) => { if (e != null) { if (callback != null) { callback(this, new GroupOperationException(e.Message, e, new List <KiiUser>(addUsers), null)); } return; } // parse response try { JsonObject respObj = new JsonObject(response.Body); mId = respObj.GetString("groupID"); // TODO: parse response and get list of failed user (CMO-557) } catch (JsonException) { if (callback != null) { callback(this, new IllegalKiiBaseObjectFormatException(response.Body)); } return; } addUsers.Clear(); if (callback != null) { callback(this, null); } }); }
internal static void LogOut() { Utils.CheckInitialize(false); CurrentUser = null; KiiCloudEngine.ClearAccessToken(); }
private void ExecListMembers(KiiHttpClientFactory factory, KiiUserListCallback callback) { Utils.CheckInitialize(true); string groupId = ID; if (Utils.IsEmpty(groupId)) { if (callback != null) { callback(null, new InvalidOperationException(ErrorInfo.KIIGROUP_NO_ID)); } return; } string getUrl = Utils.Path(MembersUrl); KiiHttpClient client = factory.Create(getUrl, Kii.AppId, Kii.AppKey, KiiHttpMethod.GET); KiiCloudEngine.SetAuthBearer(client); client.Accept = "application/vnd.kii.MembersRetrievalResponse+json"; // send request client.SendRequest((ApiResponse response, Exception e) => { if (e != null) { if (callback != null) { callback(null, e); } return; } // parse response List <KiiUser> members = new List <KiiUser>(); try { JsonObject respObj = new JsonObject(response.Body); JsonArray array = respObj.GetJsonArray("members"); if (array == null || array.Length() == 0) { if (callback != null) { callback(members, null); } return; } for (int i = 0; i < array.Length(); i++) { JsonObject obj = array.GetJsonObject(i); string id = obj.GetString("userID"); if (Utils.IsEmpty(id)) { callback(null, new IllegalKiiBaseObjectFormatException(response.Body)); return; } KiiUser user = KiiUser.UserWithID(id); members.Add(user); } } catch (JsonException) { if (callback != null) { callback(null, new IllegalKiiBaseObjectFormatException(response.Body)); } return; } if (callback != null) { callback(members, null); } }); }