예제 #1
0
        public List <Project> LoadAllProject(State state)
        {
            var projects = new List <Project>();
            var root     = state.RootPath;
            var path     = FolderPattern.GetPathForProjectRoot(root);

            if (!DoesFolderExist(path))
            {
                return(projects);
            }

            var files = GetProjectFileNames(path);

            foreach (var file in files)
            {
                var filename = file.Split('\\');
                var data     = Load(path, filename.Last());
                if (data != null)
                {
                    projects.Add(data);
                }
            }

            return(projects);
        }
예제 #2
0
        public void SaveRecord(State state, Project project, Record record)
        {
            var root           = state.RootPath;
            var pathForProject = FolderPattern.GetPathForProject(root, project.GetFileName());

            SaveRecordInternal(pathForProject, record);
        }
예제 #3
0
        public List <Record> LoadRecords(State state)
        {
            var records = new List <Record>();

            if (state?.CurrentProject == null)
            {
                return(records);
            }

            var root = state.RootPath;
            var path = FolderPattern.GetPathForProject(root, state.CurrentProject.GetFileName());

            if (!DoesFolderExist(path))
            {
                return(records);
            }

            var files = GetRecordFileNames(path);

            foreach (var filepath in files)
            {
                var filename = filepath.Split('\\').Last();
                var data     = Load(path, filename);
                if (data != null)
                {
                    records.Add(data);
                }
            }

            state.CurrentProject.Records = records;
            return(records);
        }
예제 #4
0
        public void SaveExport(State state, Project project, Export export)
        {
            var root = state.RootPath;
            var path = FolderPattern.GetPathForProject(root, project.GetFileName());
            var file = FilePattern.GetFileName(export.GetFileName(), FilePattern.DataExportFileEnding);

            Write(path, file, export.data);
        }
예제 #5
0
        public Project LoadProject(State state, string projectKey)
        {
            var root = state.RootPath;
            var path = FolderPattern.GetPathForProjectRoot(root);;
            var file = FilePattern.GetFileName(projectKey, FilePattern.ProjectFileEnding);

            return(Load(path, file));
        }
예제 #6
0
        public void SaveRecords(State state, Project project)
        {
            var root           = state.RootPath;
            var pathForProject = FolderPattern.GetPathForProject(root, project.GetFileName());

            foreach (var record in state.CurrentProject.Records)
            {
                SaveRecordInternal(pathForProject, record);
            }
        }
예제 #7
0
 /// <summary>
 /// 目录列表,前缀搜索
 /// </summary>
 /// <param name="bucketName">bucket名称</param>
 /// <param name="remotePath">远程文件夹路径</param>
 /// <param name="num">拉取的总数</param>
 /// <param name="context">透传字段,用于翻页,前端不需理解,需要往前/往后翻页则透传回来</param>
 /// <param name="order">默认正序(=0), 填1为反序</param>
 /// <param name="pattern">拉取模式:只是文件,只是文件夹,全部</param>
 /// <param name="prefix">读取文件/文件夹前缀</param>
 /// <returns></returns>
 public async Task<string> GetFolderList(string bucketName, string remotePath, int num, string context, int order, FolderPattern pattern, string prefix = "")
 {
     remotePath = StandardizationRemotePath(remotePath);
     var url = VIDEOAPI_CGI_URL + appId + "/" + bucketName + EncodeRemotePath(remotePath) + HttpUtility.UrlEncode(prefix);
     var data = new Dictionary<string, string>();
     data.Add("op", "list");
     data.Add("num", num.ToString());
     data.Add("context", context);
     data.Add("order", order.ToString());
     string[] patternArray = { "eListFileOnly", "eListDirOnly", "eListBoth" };
     data.Add("pattern", patternArray[(int)pattern]);
     var expired = DateTime.Now.ToUnixTime() / 1000 + 60;
     var sign = Sign.Signature(appId, secretId, secretKey, expired, bucketName);
     var header = new Dictionary<string, string>();
     header.Add("Authorization", sign);
     return await Request.SendRequest(url, data, HttpMethod.Get, header, timeOut);
 }
예제 #8
0
        /// <summary>
        /// 目录列表,前缀搜索
        /// </summary>
        /// <param name="bucketName">bucket名称</param>
        /// <param name="remotePath">远程文件夹路径</param>
        /// <param name="num">拉取的总数</param>
        /// <param name="context">透传字段,用于翻页,前端不需理解,需要往前/往后翻页则透传回来</param>
        /// <param name="order">默认正序(=0), 填1为反序</param>
        /// <param name="pattern">拉取模式:只是文件,只是文件夹,全部</param>
        /// <param name="prefix">读取文件/文件夹前缀</param>
        /// <returns></returns>
        public string GetFolderList(string bucketName, string remotePath, int num, string context, int order, FolderPattern pattern, string prefix = "")
        {
            remotePath = StandardizationRemotePath(remotePath);
            var url  = COSAPI_CGI_URL + appId + "/" + bucketName + EncodeRemotePath(remotePath) + HttpUtility.UrlEncode(prefix);
            var data = new Dictionary <string, string>();

            data.Add("op", "list");
            data.Add("num", num.ToString());
            data.Add("context", context);
            data.Add("order", order.ToString());
            string[] patternArray = { "eListFileOnly", "eListDirOnly", "eListBoth" };
            data.Add("pattern", patternArray[(int)pattern]);
            var expired = DateTime.Now.ToUnixTime() / 1000 + 60;
            var sign    = Sign.Signature(appId, secretId, secretKey, expired, bucketName);
            var header  = new Dictionary <string, string>();

            header.Add("Authorization", sign);
            return(Request.SendRequest(url, data, HttpMethod.Get, header, timeOut));
        }
예제 #9
0
        public void SaveProject(State state, Project project)
        {
            var file = FilePattern.GetFileName(project.GetFileName(), FilePattern.ProjectFileEnding);

            Save(FolderPattern.GetPathForProjectRoot(state.RootPath), file, project);
        }