Ejemplo n.º 1
0
 public PlatformVersion(IPlatformSession session, IPlatformUser user, JToken content, int currentVersion)
 {
     this.Id = content.SelectToken("id").Value<int>();
     this.ParentId = FileId = content.SelectToken("file_id").Value<int>();
     this.Name = content.SelectToken("file_name").Value<string>();
     this.CreatedAt = content.SelectToken("created_at").Value<DateTime>();
     this.Number = content.SelectToken("version").Value<int>();
     this.IsLatest = currentVersion == Number;
     Creator = new PlatformUser(session, content.SelectToken("creator"));
 }
Ejemplo n.º 2
0
        public PlatformFolder(IPlatformSession session, IPlatformUser user, IPlatformFolder parentFolder, JToken content)
            : base(session, user)
        {
            Contract.Requires(session != null);
            Contract.Requires(user != null);
            Contract.Requires(content != null);

            Parent = parentFolder;
            Id = content.SelectToken("id").Value<long>();
            Name = content.SelectToken("name").Value<string>();
            Description = content.SelectToken("description").Value<string>();
            FileCount = content.SelectToken("file_counter").Value<long>();
            FolderCount = content.SelectToken("folder_counter").Value<long>();
            MemberCount = content.SelectToken("members_counter").Value<long>();
            ParentId = content.SelectToken("parent_id").Value<long?>();
            Url = content.SelectToken("url").Value<string>();
            Uuid = content.SelectToken("uuid").Value<string>();

            Owner = new PlatformUser(session, content.SelectToken("owner"));
            Permissions = new PlatformPermissions(content, content.SelectToken("permissions"));
            IsOwner = user.Email == Owner.Email;
        }
        private void socket_MessageReceived(object sender, SocketIOClient.MessageEventArgs e)
        {
            if (e.Message.MessageType == SocketIOMessageTypes.JSONMessage)
            {
                Logger.LogTrace(e.Message.MessageText);
                var json = JObject.Parse(e.Message.MessageText);
                var noun = json.SelectToken("noun").Value<string>();
                var verb = json.SelectToken("verb").Value<string>();
                var creatorUuid = json.SelectToken("creator").SelectToken("uuid").Value<string>();
                switch (noun)
                {
                    case "Comment":
                    {
                        var comment = json.SelectToken("comment");
                        var commentId = comment.SelectToken("id").Value<long>();
                        var fileId = comment.SelectToken("file_id").Value<int>();
                        var versionNumber = comment.SelectToken("file_version").Value<int>();
                        var body = comment.SelectToken("body").Value<string>();
                        switch (verb)
                        {
                            case "Create":
                                Events.GetEvent<FileCommentAddedEvent>().Publish(new CommentEventArgs()
                                {
                                    CommentId = commentId,
                                    FileId = fileId,
                                    VersionNumber = versionNumber,
                                    UserUuId = creatorUuid
                                });
                                break;

                            case "Delete":
                                Events.GetEvent<FileCommentRemovedEvent>().Publish(new CommentEventArgs()
                                {
                                    CommentId = commentId,
                                    FileId = fileId,
                                    VersionNumber = versionNumber,
                                    UserUuId = creatorUuid
                                });
                                break;

                            case "Update":
                                Events.GetEvent<FileCommentEditedEvent>().Publish(new CommentEventArgs()
                                {
                                    CommentId = commentId,
                                    FileId = fileId,
                                    VersionNumber = versionNumber,
                                    Body = body,
                                    UserUuId = creatorUuid
                                });
                                break;
                        }
                        break;
                    }

                    case "Visit":
                    {
                        var userId = json.SelectToken("visit").SelectToken("user_id").Value<string>();
                        var fileId = json.SelectToken("visit").SelectToken("file_id").Value<int?>().GetValueOrDefault();
                        var folderid = json.SelectToken("visit").SelectToken("folder_id").Value<int?>().GetValueOrDefault();
                        Events.GetEvent<UserVisitEvent>().Publish(new UserEventArgs()
                        {
                            UserId = userId,
                            UserUuid = creatorUuid,
                            FolderId = folderid,
                            FileId = fileId
                        });
                        break;
                    }

                    case "FileVersion":
                    {
                        switch (verb)
                        {
                            case "Update":
                            {
                                var newStatus = json.SelectToken("changes").SelectToken("status").SelectToken("new");


                                if (newStatus.Type == JTokenType.String &&
                                    string.Equals(newStatus.Value<string>(), "applied"))
                                {
                                    var creatorToken = json.SelectToken("file_version").SelectToken("creator");
                                    var creator = new PlatformUser(Session, creatorToken);
                                    var version = new PlatformVersion(Session, User, json.SelectToken("file_version"),
                                        -1);
                                    Events.GetEvent<FileVersionAddedEvent>().Publish(new VersionEventArgs()
                                    {
                                        VersionNumber = version.Number,
                                        FileId = version.FileId,
                                        Creator = creator,
                                        Version = version
                                    });

                                }
                                break;
                            }
                        }
                    }
                        break;

                    case "Member":
                    {
                        var memberToken = json.SelectToken("member");
                        var user = new PlatformUser(Session, memberToken);
                        var folderId = json.SelectToken("folder_id").Value<int?>().GetValueOrDefault();
                        switch (verb)
                        {
                            case "Create":
                            {
                                Events.GetEvent<MemberAddedEvent>().Publish(new MemberActionEventArgs()
                                {
                                    FolderId = folderId,
                                    Member = user,
                                    MemverUuid = user.Uuid
                                });
                                break;
                            }
                            case "Delete":
                            {
                                Events.GetEvent<MemberRemovedvent>().Publish(new MemberActionEventArgs()
                                {
                                    FolderId = folderId,
                                    Member = user,
                                    MemverUuid = user.Uuid
                                });
                                break;
                            }
                        }
                        break;
                    }

                    case "File" :
                    {
                        var fileId = json.SelectToken("file_id").Value<int>();
                        switch (verb)
                        {
                            case "Download":
                            {
                                Events.GetEvent<FileDownloadedEvent>().Publish(new FileActionArgs()
                                {
                                    FileId = fileId,
                                    UserUuid = creatorUuid
                                });
                                break;
                            }
                        }
                        break;
                    }

                }
            }
            else if (e.Message.MessageType == SocketIOMessageTypes.Event)
            {
                switch (e.Message.Event)
                {
                    case "file:openedByUser"    :
                    {
                        var jsom = JObject.Parse(e.Message.MessageText);
                        var data = jsom.SelectToken("args").First;
                        var userUuid = data.SelectToken("uuid").Value<string>();
                        var fileid = data.SelectToken("file_id").Value<int>();
                        var currentEditors = data.SelectToken("current_editors").Value<int>();
                        Events.GetEvent<FileOpenedEvent>().Publish(new FileOpenCloseArgs()
                        {
                            FileId = fileid,
                            UserUuid = userUuid,
                            CurrentEdotorsCount = currentEditors
                        });
                        break;
                    }

                    case "file:closedByUser":
                    {
                        var jsom = JObject.Parse(e.Message.MessageText);
                        var data = jsom.SelectToken("args").First;
                        var userUuid = data.SelectToken("uuid").Value<string>();
                        var fileid = data.SelectToken("file_id").Value<int>();
                        var currentEditors = data.SelectToken("current_editors").Value<int>();
                        Events.GetEvent<FileClosedEvent>().Publish(new FileOpenCloseArgs()
                        {
                            FileId = fileid,
                            UserUuid = userUuid,
                            CurrentEdotorsCount = currentEditors
                        });
                        break;
                    }

                }
            }

        }
Ejemplo n.º 4
0
        public IPlatformUser GetCurrentUser()
        {
            var client = new RestClient(Host.Url, Session.Cookies);
            client.Get("/api/v1.3/current_user.json");

            var user = new PlatformUser(Session)
            {
                Id = client.Content.SelectToken("id").Value<string>(),
                Email = client.Content.SelectToken("email").Value<string>().ToLower(),
                AccountId = 
                    client.Content.SelectToken("account").SelectToken("id").Value<string>(),
                Plan =
                    client.Content.SelectToken("account")
                    .SelectToken("plan_name")
                    .Value<string>()
            };

            return user;

            //var client = new RestClient(Host.Url);
            //var request = CreateRequest("/api/v1.3/current_user.json", Method.GET);
            //var response = client.Execute(request);

            //ResponsePolicy.Validate(response);

            //var parsedContent = JObject.Parse(response.Content);

            //var user = new PlatformUser
            //           {
            //               Id = parsedContent.SelectToken("id").Value<string>(),
            //               Email = parsedContent.SelectToken("email").Value<string>(),
            //               AccountId =
            //                   parsedContent.SelectToken("account").SelectToken("id").Value<string>(),
            //               Plan =
            //                   parsedContent.SelectToken("account")
            //                   .SelectToken("plan_name")
            //                   .Value<string>()
            //           };

            //return user;
        }
Ejemplo n.º 5
0
        public IPlatformUser GetUser(string email)
        {
            var client = new RestClient(Host.Url);
            client.AddParameter("email", email);
            client.Get("/api/open-v1.3/users/user_exists.json");
            var userContent = client.Content.First;
            if (userContent.SelectToken("present").Value<bool>())
            {
                var user = new PlatformUser(Session)
                           {
                               Email = userContent.SelectToken("email").Value<string>().ToLower(),
                               Plan = userContent.SelectToken("plan_name").Value<string>(),
                               IsProfessionalEnabled =
                                   userContent.SelectToken("professional8").Value<bool>(),
                               IsDeactivated = userContent.SelectToken("is_deactivated").Value<bool>()
                           };

                return user;
            }
            return null;
        }