Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
                }
            });
        }
Esempio n. 3
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);
            });
        }
Esempio n. 4
0
        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);
            });
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 8
0
        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");
        }
Esempio n. 11
0
        /// <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;
        }
Esempio n. 12
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);
                    }
                }
            });
        }
Esempio n. 13
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;
                }
            });
        }
Esempio n. 14
0
 /// <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);
        }
Esempio n. 16
0
        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);
                }
            });
        }
Esempio n. 17
0
 internal static void LogOut()
 {
     Utils.CheckInitialize(false);
     CurrentUser = null;
     KiiCloudEngine.ClearAccessToken();
 }
Esempio n. 18
0
        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);
                }
            });
        }