Esempio n. 1
0
        private void DoRenamed(GCAction action)
        {
            //Does it still exist?
            if (!FileOrDirectoryExists(action.Path))
            {
                return;
            }


            if (ThisIsFromMe(action))
            {
                return;
            }

            Object o = FindDiskItem(action);

            // We should already have this file in DB unless its a new folder thats just got renamed
            if (!Directory.Exists(action.Path) && o == null)
            {
                return;
            }

            if (o == null)
            {
                // new folder
                DoNew(action);
                return;
            }

            //        @GET
            // @Path("/rename")
            // @Produces(MediaType.APPLICATION_JSON)
            // @Transactional
            //public FileMetaUpdate rename(
            //        @QueryParam("apiId") String apiId,
            //        @QueryParam("key") String key,
            //        @QueryParam("docId") Long docId,
            //        @QueryParam("filename") String fileName,
            //        @QueryParam("folder") Boolean isFolder) {

            if (o is DiskItem)
            {
                DiskItem item    = (DiskItem)o;
                var      request = newReq("/rest/sync/rename");

                SetUpRequest(request);
                request.AddParameter("docId", item.Id);
                request.AddParameter("folder", item.Folder);
                request.AddParameter("filename", Path.GetFileName(action.Path));

                var response = client.Execute <NewFileMeta>(request);
                if (response.ResponseStatus == ResponseStatus.Completed)
                {
                    NewFileMeta meta = response.Data;
                    if (meta.success)
                    {
                        // what do if anything?
                        return;
                    }
                }
                Console.Error.Write("Could not rename file ? ", action.Path);
            }

            // we do nothing if workspace
            Console.Error.Write("Workspace NOT being renamed ? ", action.Path);
        }
Esempio n. 2
0
        private void DoNew(GCAction action)
        {
            //Does it still exist?
            if (!FileOrDirectoryExists(action.Path))
            {
                return;                                      // can happen when creating a new folder that immediately gets a different name
            }
            if (ThisIsFromMe(action))
            {
                return;
            }

            RestRequest    request;
            FileAttributes attr = File.GetAttributes(action.Path);

            if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
            {
                request = newReq("/rest/sync/newFolder", Method.GET);
            }
            else
            {
                request = newReq("/rest/sync/new", Method.POST);
            }


            SetUpRequest(request);
            request.AddHeader("Content-Type", "multipart/form-data");

            request.AddParameter("apiId", apiId, ParameterType.QueryString);
            request.AddParameter("key", key, ParameterType.QueryString);

            DiskItem i = new DiskItem();
            Object   o = FindParentDiskItem(action);

            if (o == null)
            {
                Console.Error.Write("Unknown parent DIR cannot sync ?", action.Path);
                return;
            }
            if (o is Workspace)
            {
                request.AddParameter("workspaceId", ((Workspace)o).Id, ParameterType.QueryString);
                i.WorkspaceId = ((Workspace)o).Id;
            }
            else if (o is DiskItem)
            {
                DiskItem f = (DiskItem)o;
                request.AddParameter("workspaceId", f.WorkspaceId, ParameterType.QueryString);
                request.AddParameter("folderId", f.Id, ParameterType.QueryString);
                i.FolderId    = f.Id;
                i.WorkspaceId = f.WorkspaceId;
            }


            if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
            {
                request.AddParameter("folderName", Path.GetFileName(action.Path), ParameterType.QueryString);
                i.Folder = true;
            }
            else
            {
                request.AddFile("file", action.Path);
            }

            var response = client.Execute <NewFileMeta>(request);

            if (response.ResponseStatus == ResponseStatus.Completed)
            {
                NewFileMeta meta = response.Data;
                if (meta.success)
                {
                    // insert new DiskItem

                    i.Id       = (long)meta.docId;
                    i.FileName = Path.GetFileName(action.Path);
                    i.Action   = "ADD";
                    i.Created  = meta.created;
                    i.Path     = Path.GetFileName(action.Path);
                    if (!i.Folder)
                    {
                        FileInfo info = new FileInfo(action.Path);
                        i.Size = info.Length;
                    }
                    i.Version = 1;
                    db.Insert(i);
                }
            }
        }