Example #1
0
        public Task TestBecome()
        {
            IObjectState state = new MutableObjectState
            {
                ObjectId   = "some0neTol4v4",
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "llaKcolnu" }
                }
            };
            var mockController = new Mock <IAVUserController>();

            mockController.Setup(obj => obj.GetUserAsync("llaKcolnu",
                                                         It.IsAny <CancellationToken>())).Returns(Task.FromResult(state));
            AVPlugins.Instance = new AVPlugins
            {
                UserController = mockController.Object
            };
            AVObject.RegisterSubclass <AVUser>();
            AVObject.RegisterSubclass <AVSession>();

            return(AVUser.BecomeAsync("llaKcolnu").ContinueWith(t =>
            {
                Assert.False(t.IsFaulted);
                Assert.False(t.IsCanceled);
                mockController.Verify(obj => obj.GetUserAsync("llaKcolnu",
                                                              It.IsAny <CancellationToken>()), Times.Exactly(1));

                var user = t.Result;
                Assert.AreEqual("some0neTol4v4", user.ObjectId);
                Assert.AreEqual("llaKcolnu", user.SessionToken);
            }));
        }
Example #2
0
        public Task TestUpgradeToRevocableSession()
        {
            IObjectState state = new MutableObjectState {
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "llaKcolnu" }
                }
            };
            var mockController = new Mock <IAVSessionController>();

            mockController.Setup(obj => obj.UpgradeToRevocableSessionAsync(It.IsAny <string>(),
                                                                           It.IsAny <CancellationToken>())).Returns(Task.FromResult(state));

            var mockCurrentUserController = new Mock <IAVCurrentUserController>();

            AVPlugins.Instance = new AVPlugins {
                SessionController     = mockController.Object,
                CurrentUserController = mockCurrentUserController.Object,
            };
            AVObject.RegisterSubclass <AVUser>();
            AVObject.RegisterSubclass <AVSession>();

            CancellationTokenSource source = new CancellationTokenSource();

            return(AVSessionExtensions.UpgradeToRevocableSessionAsync("someSession", source.Token).ContinueWith(t => {
                Assert.False(t.IsFaulted);
                Assert.False(t.IsCanceled);
                mockController.Verify(obj => obj.UpgradeToRevocableSessionAsync(It.Is <string>(sessionToken => sessionToken == "someSession"),
                                                                                source.Token), Times.Exactly(1));

                Assert.AreEqual("llaKcolnu", t.Result);
            }));
        }
Example #3
0
        public void TestIsAuthenticatedWithOtherParseUser()
        {
            IObjectState state = new MutableObjectState
            {
                ObjectId   = "wagimanPutraPetir",
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "llaKcolnu" }
                }
            };
            IObjectState state2 = new MutableObjectState
            {
                ObjectId   = "wagimanPutraPetir2",
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "llaKcolnu" }
                }
            };
            AVUser user  = AVObjectExtensions.FromState <AVUser>(state, "_User");
            AVUser user2 = AVObjectExtensions.FromState <AVUser>(state2, "_User");
            var    mockCurrentUserController = new Mock <IAVCurrentUserController>();

            mockCurrentUserController.Setup(obj => obj.GetAsync(It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(user));
            AVPlugins.Instance = new AVPlugins
            {
                CurrentUserController = mockCurrentUserController.Object
            };
            AVObject.RegisterSubclass <AVUser>();
            AVObject.RegisterSubclass <AVSession>();

            Assert.False(user2.IsAuthenticated);
        }
Example #4
0
        public Task TestLogOut()
        {
            IObjectState state = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "r:llaKcolnu" }
                }
            };
            AVUser user = AVObjectExtensions.FromState <AVUser>(state, "_User");
            var    mockCurrentUserController = new Mock <IAVCurrentUserController>();

            mockCurrentUserController.Setup(obj => obj.GetAsync(It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(user));
            var mockSessionController = new Mock <IAVSessionController>();

            mockSessionController.Setup(c => c.IsRevocableSessionToken(It.IsAny <string>())).Returns(true);

            AVPlugins.Instance = new AVPlugins
            {
                CurrentUserController = mockCurrentUserController.Object,
                SessionController     = mockSessionController.Object
            };
            AVObject.RegisterSubclass <AVUser>();
            AVObject.RegisterSubclass <AVSession>();

            return(AVUser.LogOutAsync().ContinueWith(t =>
            {
                Assert.False(t.IsFaulted);
                Assert.False(t.IsCanceled);
                mockCurrentUserController.Verify(obj => obj.LogOutAsync(It.IsAny <CancellationToken>()), Times.Exactly(1));
                mockSessionController.Verify(obj => obj.RevokeAsync("r:llaKcolnu", It.IsAny <CancellationToken>()), Times.Exactly(1));
            }));
        }
Example #5
0
        private void Start()
        {
            var netComponent = World.CreateComponent <NetComponent>();

            AVObject.RegisterSubclass <Player>();
            var uiComponent = World.CreateComponent <UIComponent>();

            uiComponent.SyncOpenView <LoginView>();
        }
Example #6
0
 static TMLobby()
 {
     AVObject.RegisterSubclass <TMJsonRequest>();
     AVObject.RegisterSubclass <TMRoom>();
     AVObject.RegisterSubclass <TMClientInfoInRoom>();
     AVObject.RegisterSubclass <TMGame>();
     AVObject.RegisterSubclass <TMPlayer>();
     AVObject.RegisterSubclass <TMCharacter>();
 }
Example #7
0
        public Task TestUnlink()
        {
            IObjectState state = new MutableObjectState
            {
                ObjectId   = "some0neTol4v4",
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "llaKcolnu" },
                    { "authData", new Dictionary <string, object>
                      {
                          {
                              "parse", new Dictionary <string, object>()
                          }
                      } }
                }
            };
            IObjectState newState = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>()
                {
                    { "garden", "ofWords" }
                }
            };
            AVUser user = AVObjectExtensions.FromState <AVUser>(state, "_User");
            var    mockObjectController = new Mock <IAVObjectController>();

            mockObjectController.Setup(obj => obj.SaveAsync(It.IsAny <IObjectState>(),
                                                            It.IsAny <IDictionary <string, IAVFieldOperation> >(),
                                                            It.IsAny <string>(),
                                                            It.IsAny <CancellationToken>())).Returns(Task.FromResult(newState));
            var mockCurrentUserController = new Mock <IAVCurrentUserController>();

            mockCurrentUserController.Setup(obj => obj.IsCurrent(user)).Returns(true);
            AVPlugins.Instance = new AVPlugins
            {
                ObjectController      = mockObjectController.Object,
                CurrentUserController = mockCurrentUserController.Object,
            };
            AVObject.RegisterSubclass <AVUser>();
            AVObject.RegisterSubclass <AVSession>();

            return(user.UnlinkFromAsync("parse", CancellationToken.None).ContinueWith(t =>
            {
                Assert.False(t.IsFaulted);
                Assert.False(t.IsCanceled);
                mockObjectController.Verify(obj => obj.SaveAsync(It.IsAny <IObjectState>(),
                                                                 It.IsAny <IDictionary <string, IAVFieldOperation> >(),
                                                                 It.IsAny <string>(),
                                                                 It.IsAny <CancellationToken>()), Times.Exactly(1));
                Assert.False(user.IsDirty);
                Assert.NotNull(user.GetAuthData());
                Assert.False(user.GetAuthData().ContainsKey("parse"));
                Assert.AreEqual("some0neTol4v4", user.ObjectId);
                Assert.AreEqual("ofWords", user["garden"]);
            }));
        }
Example #8
0
        public void OnParseInitialized()
        {
            AVObject.RegisterSubclass <AVInstallation>();

            AVPlugins.Instance.SubclassingController.AddRegisterHook(typeof(AVInstallation), () => {
                AVPushPlugins.Instance.CurrentInstallationController.ClearFromMemory();
            });

            AVPushPlugins.Instance.DeviceInfoController.Initialize();
        }
Example #9
0
        public Task TestSubClassQuery()
        {
            AVObject.RegisterSubclass <Employee>();
            var query = new AVQuery <Employee>();

            return(query.FindAsync().ContinueWith(t =>
            {
                var first = t.Result.FirstOrDefault();
                Assert.True(first.GetType() == typeof(Employee));
            }));
        }
Example #10
0
        public void TestGetQuery()
        {
            AVObject.RegisterSubclass <SubClass>();

            AVQuery <AVObject> query = AVObject.GetQuery("UnregisteredSubClass");

            Assert.AreEqual("UnregisteredSubClass", query.GetClassName());

            Assert.Throws <ArgumentException>(() => AVObject.GetQuery("SubClass"));

            AVPlugins.Instance.SubclassingController.UnregisterSubclass(typeof(SubClass));
        }
Example #11
0
        static void Main(string[] args)
        {
            AVObject.RegisterSubclass <AVUser>();
            Cloud cloud = new Cloud();

            cloud.OnLogIn((AVUser user) => {
                Console.WriteLine($"{user.Username} loged in");
            });
            cloud.UseLog();
            GetHooks(cloud);
            cloud.Start(args);
        }
Example #12
0
        public void TestRegisterSubclass()
        {
            Assert.Throws <InvalidCastException>(() => AVObject.Create <SubClass>());

            AVObject.RegisterSubclass <SubClass>();
            Assert.DoesNotThrow(() => AVObject.Create <SubClass>());

            AVPlugins.Instance.SubclassingController.UnregisterSubclass(typeof(UnregisteredSubClass));
            Assert.DoesNotThrow(() => AVObject.Create <SubClass>());

            AVPlugins.Instance.SubclassingController.UnregisterSubclass(typeof(SubClass));
            Assert.Throws <InvalidCastException>(() => AVObject.Create <SubClass>());
        }
Example #13
0
        public void TestCurrentUserWithEmptyResult()
        {
            var mockCurrentUserController = new Mock <IAVCurrentUserController>();

            AVPlugins.Instance = new AVPlugins
            {
                CurrentUserController = mockCurrentUserController.Object
            };
            AVObject.RegisterSubclass <AVUser>();
            AVObject.RegisterSubclass <AVSession>();

            Assert.Null(AVUser.CurrentUser);
        }
Example #14
0
        public Task TestUserSave()
        {
            IObjectState state = new MutableObjectState
            {
                ObjectId   = "some0neTol4v4",
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "llaKcolnu" },
                    { "username", "ihave" },
                    { "password", "adream" }
                }
            };
            IObjectState newState = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>()
                {
                    { "Alliance", "rekt" }
                }
            };
            AVUser user = AVObjectExtensions.FromState <AVUser>(state, "_User");
            var    mockObjectController = new Mock <IAVObjectController>();

            mockObjectController.Setup(obj => obj.SaveAsync(It.IsAny <IObjectState>(),
                                                            It.IsAny <IDictionary <string, IAVFieldOperation> >(),
                                                            It.IsAny <string>(),
                                                            It.IsAny <CancellationToken>())).Returns(Task.FromResult(newState));
            AVPlugins.Instance = new AVPlugins
            {
                ObjectController      = mockObjectController.Object,
                CurrentUserController = new Mock <IAVCurrentUserController>().Object
            };
            AVObject.RegisterSubclass <AVUser>();
            AVObject.RegisterSubclass <AVSession>();
            user["Alliance"] = "rekt";

            return(user.SaveAsync().ContinueWith(t =>
            {
                Assert.False(t.IsFaulted);
                Assert.False(t.IsCanceled);
                mockObjectController.Verify(obj => obj.SaveAsync(It.IsAny <IObjectState>(),
                                                                 It.IsAny <IDictionary <string, IAVFieldOperation> >(),
                                                                 It.IsAny <string>(),
                                                                 It.IsAny <CancellationToken>()), Times.Exactly(1));
                Assert.False(user.IsDirty);
                Assert.AreEqual("ihave", user.Username);
                Assert.False(user.GetState().ContainsKey("password"));
                Assert.AreEqual("some0neTol4v4", user.ObjectId);
                Assert.AreEqual("rekt", user["Alliance"]);
            }));
        }
Example #15
0
    private void Awake()
    {
        //DataManager.SaveData("candy", 500);
        Application.targetFrameRate = 90;
        AVObject.RegisterSubclass <PlayerData>();
        int firstLaunch = PlayerPrefs.GetInt("launch");

        if (firstLaunch == 0)
        {
            Debug.Log("第一次启动游戏");
            PlayerPrefs.SetInt("launch", 1);
            DataManager.InitData();
        }
    }
Example #16
0
        public Task TestSubclassSaveList()
        {
            AVObject.RegisterSubclass <Employee>();

            var tom       = new Employee();
            var className = tom.ClassName;

            tom.Tags = new List <string>()
            {
                "a", "b"
            };
            tom.DisplayName = "Tom";
            // TODO (hallucinogen): do this
            return(tom.SaveAsync());
        }
Example #17
0
        internal static void Initialize(string applicationId, string applicationKey, string apiHost)
        {
            lock (mutex)
            {
                HostName       = HostName ?? new Uri(apiHost);
                ApplicationId  = applicationId;
                ApplicationKey = applicationKey;

                AVObject.RegisterSubclass <AVUser>();
                AVObject.RegisterSubclass <AVInstallation>();
                AVObject.RegisterSubclass <AVRole>();
                AVObject.RegisterSubclass <AVSession>();

                // Give platform-specific libraries a chance to do additional initialization.
                //PlatformHooks.Initialize();
            }
        }
Example #18
0
        public Task TestRequestPasswordReset()
        {
            var mockController = new Mock <IAVUserController>();

            AVPlugins.Instance = new AVPlugins
            {
                UserController = mockController.Object
            };
            AVObject.RegisterSubclass <AVUser>();
            AVObject.RegisterSubclass <AVSession>();

            return(AVUser.RequestPasswordResetAsync("*****@*****.**").ContinueWith(t =>
            {
                Assert.False(t.IsFaulted);
                Assert.False(t.IsCanceled);
                mockController.Verify(obj => obj.RequestPasswordResetAsync("*****@*****.**",
                                                                           It.IsAny <CancellationToken>()), Times.Exactly(1));
            }));
        }
Example #19
0
        public void TestParseObjectCreateWithGeneric()
        {
            AVObject.RegisterSubclass <SubClass>();

            AVObject obj = AVObject.Create <SubClass>();

            Assert.AreEqual("SubClass", obj.ClassName);
            Assert.Null(obj.CreatedAt);
            Assert.True(obj.IsDataAvailable);
            Assert.True(obj.IsDirty);

            AVObject obj2 = AVObject.CreateWithoutData <SubClass>("waGiManPutr4Pet1r");

            Assert.AreEqual("SubClass", obj2.ClassName);
            Assert.AreEqual("waGiManPutr4Pet1r", obj2.ObjectId);
            Assert.Null(obj2.CreatedAt);
            Assert.False(obj2.IsDataAvailable);
            Assert.False(obj2.IsDirty);
        }
Example #20
0
        public Task TestLogIn()
        {
            IObjectState state = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "llaKcolnu" },
                    { "username", "ihave" },
                    { "password", "adream" }
                }
            };
            IObjectState newState = new MutableObjectState
            {
                ObjectId = "some0neTol4v4"
            };
            var mockController = new Mock <IAVUserController>();

            mockController.Setup(obj => obj.LogInAsync("ihave",
                                                       "adream",
                                                       It.IsAny <CancellationToken>())).Returns(Task.FromResult(newState));
            AVPlugins.Instance = new AVPlugins
            {
                UserController = mockController.Object
            };
            AVObject.RegisterSubclass <AVUser>();
            AVObject.RegisterSubclass <AVSession>();

            return(AVUser.LogInAsync("ihave", "adream").ContinueWith(t =>
            {
                Assert.False(t.IsFaulted);
                Assert.False(t.IsCanceled);
                mockController.Verify(obj => obj.LogInAsync("ihave",
                                                            "adream",
                                                            It.IsAny <CancellationToken>()), Times.Exactly(1));

                var user = t.Result;
                Assert.False(user.IsDirty);
                Assert.Null(user.Username);
                Assert.AreEqual("some0neTol4v4", user.ObjectId);
            }));
        }
Example #21
0
        public Task TestGetCurrentSession()
        {
            IObjectState sessionState = new MutableObjectState {
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "newllaKcolnu" }
                }
            };
            var mockController = new Mock <IAVSessionController>();

            mockController.Setup(obj => obj.GetSessionAsync(It.IsAny <string>(),
                                                            It.IsAny <CancellationToken>())).Returns(Task.FromResult(sessionState));

            IObjectState userState = new MutableObjectState {
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "llaKcolnu" }
                }
            };
            AVUser user = AVObjectExtensions.FromState <AVUser>(userState, "_User");
            var    mockCurrentUserController = new Mock <IAVCurrentUserController>();

            mockCurrentUserController.Setup(obj => obj.GetAsync(It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(user));
            AVPlugins.Instance = new AVPlugins {
                SessionController     = mockController.Object,
                CurrentUserController = mockCurrentUserController.Object,
            };
            AVObject.RegisterSubclass <AVSession>();

            return(AVSession.GetCurrentSessionAsync().ContinueWith(t => {
                Assert.False(t.IsFaulted);
                Assert.False(t.IsCanceled);
                mockController.Verify(obj => obj.GetSessionAsync(It.Is <string>(sessionToken => sessionToken == "llaKcolnu"),
                                                                 It.IsAny <CancellationToken>()), Times.Exactly(1));

                var session = t.Result;
                Assert.AreEqual("newllaKcolnu", session.SessionToken);
            }));
        }
Example #22
0
        /// <summary>
        /// Authenticates this client as belonging to your application. This must be
        /// called before your application can use the LeanCloud library. The recommended
        /// way is to put a call to <c>ParseFramework.Initialize</c> in your
        /// Application startup.
        /// </summary>
        /// <param name="configuration">The configuration to initialize LeanCloud with.
        /// </param>
        public static void Initialize(Configuration configuration)
        {
            lock (mutex)
            {
                var nodeHash = configuration.ApplicationId.Split('-');
                if (nodeHash.Length > 1)
                {
                    if (nodeHash[1].Trim() == "9Nh9j0Va")
                    {
                        configuration.Region = Configuration.AVRegion.Vendor_Tencent;
                    }
                }

                CurrentConfiguration = configuration;

                AVObject.RegisterSubclass <AVUser>();
                AVObject.RegisterSubclass <AVRole>();
                AVObject.RegisterSubclass <AVSession>();

                AVModuleController.Instance.LeanCloudDidInitialize();
            }
        }
Example #23
0
        public static void InitLeanCloud()
        {
            //初始化LeanCloud
            AVClient.Initialize(AppID, AppKey);


            //指定服务节点(CN/US)
            //AVClient.Configuration configuration = new AVClient.Configuration()
            //{
            //    ApplicationId = AppID,
            //    ApplicationKey = AppKey,
            //    AdditionalHTTPHeaders = new Dictionary<string, string>(),
            //    EngineServer = new Uri(""),
            //    Region = AVClient.Configuration.AVRegion.Public_CN,
            //    VersionInfo = new AVClient.Configuration.VersionInformation() {
            //        BuildVersion = "V.1.0.0",
            //        DisplayVersion ="Client 1.0.0",
            //        OSVersion = "Windows7"
            //    }
            //};
            //注册类映射
            AVObject.RegisterSubclass <Sport>();
        }
Example #24
0
        public void TestCurrentUser()
        {
            IObjectState state = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "llaKcolnu" }
                }
            };
            AVUser user = AVObjectExtensions.FromState <AVUser>(state, "_User");
            var    mockCurrentUserController = new Mock <IAVCurrentUserController>();

            mockCurrentUserController.Setup(obj => obj.GetAsync(It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(user));
            AVPlugins.Instance = new AVPlugins
            {
                CurrentUserController = mockCurrentUserController.Object,
            };
            AVObject.RegisterSubclass <AVUser>();
            AVObject.RegisterSubclass <AVSession>();

            Assert.AreEqual(user, AVUser.CurrentUser);
        }
Example #25
0
        public Task TestRevocableSession()
        {
            IObjectState state = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "llaKcolnu" }
                }
            };
            IObjectState newState = new MutableObjectState
            {
                ServerData = new Dictionary <string, object>()
                {
                    { "sessionToken", "r:llaKcolnu" }
                }
            };
            AVUser user = AVObjectExtensions.FromState <AVUser>(state, "_User");
            var    mockSessionController = new Mock <IAVSessionController>();

            mockSessionController.Setup(obj => obj.UpgradeToRevocableSessionAsync("llaKcolnu",
                                                                                  It.IsAny <CancellationToken>())).Returns(Task.FromResult(newState));
            AVPlugins.Instance = new AVPlugins
            {
                SessionController = mockSessionController.Object
            };
            AVObject.RegisterSubclass <AVUser>();
            AVObject.RegisterSubclass <AVSession>();

            return(user.UpgradeToRevocableSessionAsync(CancellationToken.None).ContinueWith(t =>
            {
                Assert.False(t.IsFaulted);
                Assert.False(t.IsCanceled);
                mockSessionController.Verify(obj => obj.UpgradeToRevocableSessionAsync("llaKcolnu",
                                                                                       It.IsAny <CancellationToken>()), Times.Exactly(1));
                Assert.AreEqual("r:llaKcolnu", user.SessionToken);
            }));
        }
Example #26
0
 private void InitializeDataClass()
 {
     AVObject.RegisterSubclass <ACCOUNT>();
 }
 protected override void OnStartup(StartupEventArgs e)
 {
     base.OnStartup(e);
     AVObject.RegisterSubclass <Team>();
 }
Example #28
0
        public static void UseLambda(this Cloud cloud)
        {
            // case 1. use EngineObjectHookContext
            cloud.UseHook("Todo", EngineHookType.BeforeSave, (context) =>
            {
                var todo = context.TheObject;
                var by   = context.By;
                return(Task.FromResult(context.TheObject));
            });

            cloud.BeforeSave("Todo", (context) =>
            {
                return(Task.FromResult(context.TheObject));
            });

            // case 2. use TheObject
            cloud.UseHook("Todo", EngineHookType.BeforeSave, (AVObject todoObj) =>
            {
                return(Task.FromResult(todoObj));
            });

            cloud.BeforeSave("Todo", (AVObject todoObj) =>
            {
                return(Task.FromResult(todoObj));
            });

            // case 3. use TheObject and user
            cloud.UseHook("Todo", EngineHookType.BeforeSave, (AVObject todoObj, AVUser by) =>
            {
                return(Task.FromResult(todoObj));
            });

            cloud.BeforeSave("Todo", (AVObject todoObj, AVUser by) =>
            {
                return(Task.FromResult(todoObj));
            });

            // case 3. use sub-class
            AVObject.RegisterSubclass <Todo>();

            cloud.UseHook <Todo>(EngineHookType.BeforeSave, (Todo theTodoObj) =>
            {
                // theTodoObj is an Todo instance.
                return(Task.FromResult(theTodoObj));
            });

            cloud.UseHook <Todo>(EngineHookType.BeforeSave, (Todo theTodoObj, AVUser by) =>
            {
                return(Task.FromResult(theTodoObj));
            });

            cloud.BeforeSave <Todo>((todo) =>
            {
                // todo is an Todo instance.
                return(Task.FromResult(todo));
            });

            cloud.BeforeSave <Todo>((todo, by) =>
            {
                // todo is an Todo instance.
                return(Task.FromResult(todo));
            });

            cloud.BeforeUpdate("Todo", review =>
            {
                var updatedKeys = review.GetUpdatedKeys();
                if (updatedKeys.Contains("comment"))
                {
                    var comment = review.Get <string>("comment");
                    if (comment.Length > 140)
                    {
                        throw new EngineException(400, "comment 长度不得超过 140 字符");
                    }
                }
                return(Task.FromResult(true));
            });

            EngineHookDelegateSynchronous afterPostHook = (post) =>
            {
            };

            cloud.AfterSave("Post", (EngineObjectHookDeltegateSynchronous)(async post =>
            {
                // 直接修改并保存对象不会再次触发 after update hook 函数
                post["foo"] = "bar";
                await post.SaveAsync();
                // 如果有 FetchAsync 操作,则需要在新获得的对象上调用相关的 disable 方法
                // 来确保不会再次触发 Hook 函数
                await post.FetchAsync();
                post.DisableAfterHook();
                post["foo"] = "bar";

                // 如果是其他方式构建对象,则需要在新构建的对象上调用相关的 disable 方法
                // 来确保不会再次触发 Hook 函数
                post = AVObject.CreateWithoutData <AVObject>(post.ObjectId);
                post.DisableAfterHook();
                await post.SaveAsync();
            }));
        }
Example #29
0
 public void SetUp()
 {
     AVObject.RegisterSubclass <AVInstallation>();
 }
Example #30
0
 public void SetUp()
 {
     AVObject.RegisterSubclass <AVSession>();
     AVObject.RegisterSubclass <AVUser>();
 }