Beispiel #1
0
        public async Task <bool> MoveFile(Organization org, string srcFullName, string dstFullName)
        {
            Log.LogDebug("MoveFile: org={0} {1}, srcFullName={2}, dstFullName={3}", org.shortName, org.filespaceId,
                         srcFullName, dstFullName);
            try
            {
                var dstPath = dstFullName.Substring(0, dstFullName.LastIndexOf("/", StringComparison.Ordinal)) + "/";
                if (!await FolderExists(org.filespaceId, dstPath))
                {
                    var resultCreate = await MakeFolder(org.filespaceId, dstPath);

                    if (!resultCreate)
                    {
                        Log.LogError("Can not create folder for org {0} folder {1}", org.shortName,
                                     dstPath);
                        return(false);
                    }
                }

                var renParams = new RenParams
                {
                    filespaceid    = org.filespaceId,
                    path           = srcFullName,
                    newfilespaceid = org.filespaceId,
                    newPath        = dstFullName,
                    merge          = false,
                    replace        = true
                };
                var renResult = await ExecuteRequest <RenResult>(Ticket, "Ren", renParams);

                if (renResult != null)
                {
                    if (renResult.success || renResult.errorid.Contains("INVALID_OPERATION_FILE_IS_LOCKED"))
                    {
                        return(true);
                    }

                    CheckForInvalidTicket(renResult, "MoveFile");
                }
                else
                {
                    Log.LogError("Null result from MoveFile for org {0} file {1}", org.shortName, srcFullName);
                }
            }
            catch (Exception ex)
            {
                Log.LogError("Failed to move TCC file for org {0} file {1}: {2}", org.shortName, srcFullName,
                             ex.Message);
            }
            return(false);
        }
Beispiel #2
0
        public bool MoveFile(Organization org, string srcFullName, string dstFullName)
        {
            const string FILE_CHECKED_OUT_ERROR_ID = "INVALID_OPERATION_FILE_IS_LOCKED";

            Log.LogDebug("MoveFile: org={0} {1}, srcFullName={2}, dstFullName={3}", org.shortName, org.filespaceId,
                         srcFullName, dstFullName);
            try
            {
                if (!FolderExists(org.filespaceId, dstFullName.Substring(0, dstFullName.LastIndexOf("/")) + "/"))
                {
                    var mkdirParams = new MkDir
                    {
                        filespaceid = org.filespaceId,
                        force       = true,
                        path        = dstFullName.Substring(0, dstFullName.LastIndexOf("/")) + "/"
                    };
                    var resultCreate = ExecuteRequest(Ticket, Method.GET, "/tcc/MkDir", mkdirParams, typeof(RenResult));
                    if (resultCreate == null)
                    {
                        Log.LogError("Can not create folder for org {0} folder {1}", org.shortName,
                                     dstFullName.Substring(0, dstFullName.LastIndexOf("/")) + "/");
                        return(false);
                    }
                }

                var renParams = new RenParams
                {
                    filespaceid    = org.filespaceId,
                    path           = srcFullName,
                    newfilespaceid = org.filespaceId,
                    newPath        = dstFullName,
                    merge          = false,
                    replace        = true
                };
                var result    = ExecuteRequest(Ticket, Method.GET, "/tcc/Ren", renParams, typeof(RenResult));
                var renResult = result as RenResult;
                if (renResult != null && !renResult.success && renResult.errorid.Contains(FILE_CHECKED_OUT_ERROR_ID))
                {
                    Log.LogInformation($"File {srcFullName} for org {org.shortName} is locked, attempting to cancel checkout");
                    var cancelled = CancelCheckout(org, srcFullName);
                    if (cancelled)
                    {
                        Log.LogInformation($"Retrying MoveFile for {srcFullName} for org {org.shortName}");
                        result    = ExecuteRequest(Ticket, Method.GET, "/tcc/Ren", renParams, typeof(RenResult));
                        renResult = result as RenResult;
                    }
                }

                if (renResult != null)
                {
                    if (renResult.success || renResult.errorid.Contains("INVALID_OPERATION_FILE_IS_LOCKED"))
                    {
                        return(true);
                    }
                    CheckForInvalidTicket(renResult, "MoveFile");
                }
                else
                {
                    Log.LogError("Null result from MoveFile for org {0} file {1}", org.shortName, srcFullName);
                }
            }
            catch (Exception ex)
            {
                Log.LogError("Failed to move TCC file for org {0} file {1}: {2}", org.shortName, srcFullName, ex.Message);
            }

            return(false);
        }