/// <summary>
    /// If object exists returns the object else saves a plain object and returns it
    /// </summary>
    /// <param name="obj">empty placeholder object</param>
    /// <returns>Filesystem object</returns>
    public async Task <T> GetPersistantObject(T obj, string fileName)
    {
        List <string> files = new List <string>(_mvxFileStore.GetFilesIn(_mvxFileStore.NativePath("")));

        fileName = _mvxFileStore.NativePath(fileName);

        if (!files.Contains(fileName))
        {
            var objJson = Newtonsoft.Json.JsonConvert.SerializeObject(obj);

            objJson = bcEngine.Encrypt(objJson, currentkey_temp_dev);
            await _mvxFileStoreAsync.WriteFileAsync(fileName, objJson);
        }
        else
        {
            try
            {
                var temp = await _mvxFileStoreAsync.TryReadTextFileAsync(fileName);

                var str = bcEngine.Decrypt(temp.Result, currentkey_temp_dev);
                obj = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(str);
            }
            catch (Exception e) {
                var objJson = Newtonsoft.Json.JsonConvert.SerializeObject(obj);

                objJson = bcEngine.Encrypt(objJson, currentkey_temp_dev);
                await _mvxFileStoreAsync.WriteFileAsync(fileName, objJson);
            }
        }

        return(obj);
    }
示例#2
0
        /// <summary>
        /// Return the list of name of all attachements of a given entity
        /// </summary>
        /// <param name="idDocument"></param>
        /// <returns></returns>
        public override IList <string> GetAttachmentNames(string idDocument)
        {
            var result = new List <string>();
            var entityAttachmentDir = fileStore.PathCombine(AttachmentsDirectoryPath, idDocument);

            if (fileStore.FolderExists(entityAttachmentDir))
            {
                var fullFilePath = fileStore.GetFilesIn(entityAttachmentDir);
                result = fullFilePath.Select(file => file.Substring(file.LastIndexOf("\\", StringComparison.Ordinal) + 1)).ToList();
            }
            return(result);
        }
示例#3
0
        private void checkForUnindexedFiles()
        {
            var           files     = storage.GetFilesIn("");
            List <string> filepaths = new List <string>();
            string        npath     = storage.NativePath("");

            npath += "/";
            //Standarization ---------GETFILESIN not reliable
            foreach (var f in files)
            {
                //Removing native path
                int    index     = f.IndexOf(npath);
                string cleanPath = (index < 0)
                ? f
                : f.Remove(index, npath.Length);
                filepaths.Add(cleanPath);
            }

            var cachedFiles = new Dictionary <string, Entry>();

            foreach (var entry in _indexByHttp)
            {
                cachedFiles[entry.Value.DownloadedPath] = entry.Value;
            }

            foreach (var file in filepaths)
            {
                bool endsWith = false;
                foreach (var pfilename in _persistentFiles)
                {
                    if (file.EndsWith(pfilename))
                    {
                        endsWith = true;
                    }
                }
                if (!cachedFiles.ContainsKey(file) && !endsWith)
                {
                    deleteFile(file);
                }
            }
        }