public List <DbFileInfo> CacheFileList() { List <DbFileInfo> file_info_array = new List <DbFileInfo>(); if (this.m_sqlite_db != null) { string sql = "select hash0, hash1, hash2, version, file_name, file_md5, data_type, data_len, zip_flag, unzip_len, crypto_flag, ctl_flag from file_info"; SQLiteQuery qr = new SQLiteQuery(this.m_sqlite_db, sql); while (qr.Step()) { DbFileInfo fi = new DbFileInfo(); fi.hash_info = new PathHashInfo(); fi.hash_info.hash0 = qr.GetInteger("hash0"); fi.hash_info.hash1 = qr.GetInteger("hash1"); fi.hash_info.hash2 = qr.GetInteger("hash2"); fi.version = qr.GetInteger("version"); fi.file_name = qr.GetString("file_name"); fi.file_md5 = qr.GetString("file_md5"); fi.data_type = qr.GetInteger("data_type"); fi.data_len = qr.GetInteger("data_len"); fi.zip_flag = qr.GetInteger("zip_flag"); fi.unzip_len = qr.GetInteger("unzip_len"); fi.crypto_flag = qr.GetInteger("crypto_flag"); fi.ctl_flag = qr.GetInteger("ctl_flag"); file_info_array.Add(fi); } } return(file_info_array); }
protected override void Dispose(bool disposing) { _db = null; _dir = null; _file = null; _file_block = null; }
public IActionResult Post() { string fileName = Request.Headers["FileName"]; Guid g = Guid.NewGuid(); var fileCrypto = new ChaChaFileCrypto(); var cs = fileCrypto.BcEncryptStream(Request.Body); _googleDriveInterface.UploadFile(g.ToString(), cs); var fileInfo = new DbFileInfo { FileId = g, FileName = fileName, Key = fileCrypto.Key, Iv = fileCrypto.Iv }; _databaseInterface.StoreFileDetails(fileInfo); Dictionary <string, string> responseDict = new Dictionary <string, string> { ["fileId"] = g.ToString() }; Response.Headers.Add("Access-Control-Allow-Origin", "*"); return(Ok(responseDict)); }
public void Create(string fileName, long buffer_size = kDefaultBufferSize) { // Create a new file var file = _dir.FileSet.SingleOrDefault(obj => obj.FileName.Equals(fileName)); if (file != null) { TruncateBlocks(_db, file.Id); _file.Length = 0; _file = file; } else { file = new DbFileInfo(); file.FileName = fileName; file.DirectoryId = _dir.Id; file.BufferSize = buffer_size; _dir.FileSet.Add(file); _db.FileSet.Add(file); _db.SaveChanges(); _file = file; } ResetProperties(); }
public static void FetchRebrickableDownloadLinks() { DatabaseFileLinks.Clear(); var web = new HtmlWeb(); var htmlDoc = web.Load("https://rebrickable.com/downloads/"); var downloadLinkNodes = htmlDoc.DocumentNode.SelectNodes("//a[contains(., \".csv\")]").ToList(); var downloadLinks = new List <Tuple <string, string> >(); foreach (var linkNode in downloadLinkNodes) { string fileName = Path.GetFileNameWithoutExtension(linkNode.InnerText); if (fileName.Contains(".csv")) { fileName = Path.GetFileNameWithoutExtension(fileName); } if (Enum.TryParse(fileName.Replace("_", string.Empty), true, out RbDatabaseFile fileType)) { DatabaseFileLinks[fileType] = new DbFileInfo() { FileType = fileType, DownloadUrl = linkNode.Attributes["href"].Value, FileName = linkNode.InnerText.Trim() }; } } }
public override long FileModified(string name) { DbFileInfo file = _dir.FileSet.Single(obj => obj.FileName.Equals(name)); Debug.Assert(file != null); return(file.ModifiedTimeUTC.ToLongInt()); }
public override void TouchFile(string name) { DbFileInfo file = _dir.FileSet.SingleOrDefault(obj => obj.FileName.Equals(name)); Debug.Assert(file != null); file.ModifiedTimeUTC = DateTime.UtcNow; _db.SaveChanges(); }
public override void DeleteFile(string name) { DbFileInfo file = _dir.FileSet.SingleOrDefault(obj => obj.FileName.Equals(name)); if (file != null) { _dir.FileSet.Remove(file); _db.FileSet.Remove(file); _db.SaveChanges(); } }
public override long FileLength(string name) { /// <summary>Returns the length in bytes of a file in the directory. </summary> DbFileInfo file = _dir.FileSet.SingleOrDefault(obj => obj.FileName.Equals(name)); if (file == null) { return(0); } return(file.Length); }
protected override void Dispose(bool disposing) { if (_isDisposed) { return; } if (disposing) { Flush(); _db = null; _dir = null; _file = null; _file_block = null; } _isDisposed = true; }
public void OpenOrCreate(string fileName, long buffer_size = kDefaultBufferSize) { var file = _dir.FileSet.SingleOrDefault(obj => obj.FileName.Equals(fileName)); if (file == null) { file = new DbFileInfo(); file.FileName = fileName; file.DirectoryId = _dir.Id; file.BufferSize = buffer_size; _dir.FileSet.Add(file); _db.FileSet.Add(file); _db.SaveChanges(); } _file = file; ResetProperties(); }
public int UploadFile(string name, byte[] content) { var file = new DbFileInfo { Name = name, Content = content, }; var x = Files.Add(file); var beforeState = x.State; int r = this.SaveChanges(); var afterState = x.State; bool ok = beforeState == EntityState.Added && afterState == EntityState.Unchanged && r == 1; if (!ok) { return(-1); } return(file.Id); }
public IActionResult Get(string fileId) { Guid fileGuid; try { fileGuid = new Guid(fileId); } catch (FormatException) { return(NotFound()); } DbFileInfo fileInfo = _databaseInterface.GetFileInfo(fileGuid); if (fileInfo == null) { return(NotFound()); } var fileCrypto = new ChaChaFileCrypto() { Key = fileInfo.Key, Iv = fileInfo.Iv }; var dloadStream = new ProducerConsumerStream(1048576); _googleDriveInterface.DownloadFileAsync(fileId, dloadStream); var outStream = fileCrypto.BcDecryptStream(dloadStream); return(new FileCallbackResult(new MediaTypeHeaderValue("application/octet-stream"), async(outputStream, _) => { await outStream.CopyToAsync(outputStream); await outputStream.FlushAsync(); }) { FileDownloadName = fileInfo.FileName }); }
public void TestDBSchema() { Guid guid = Guid.NewGuid(); using (DbFileContext db = new DbFileContext()) { DbDirectory dir = new DbDirectory() { Name = "a_dir_" + guid.ToString(), }; db.DirectorySet.Add(dir); DbFileInfo file = new DbFileInfo("a_file"); dir.FileSet.Add(file); DbFileBlock block = new DbFileBlock(100); byte[] bytes = Encoding.UTF8.GetBytes("Hello World"); Array.Copy(bytes, block.RawData, bytes.Length); file.BlockSet.Add(block); db.SaveChanges(); } }
public bool ReplaceFileInfoToDb(DbFileInfo file_info) { bool flag = this.m_sqlite_db == null; bool result2; if (flag) { result2 = false; } else { string replace_sql = string.Format("replace into file_info( hash0, hash1, hash2, data_len, version, file_name, file_md5, data_type, zip_flag, unzip_len, crypto_flag, ctl_flag) values('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}', '{11}')", new object[] { file_info.hash_info.hash0.ToString(), file_info.hash_info.hash1.ToString(), file_info.hash_info.hash2.ToString(), file_info.data_len.ToString(), file_info.version.ToString(), file_info.file_name.ToString(), file_info.file_md5.ToString(), file_info.data_type.ToString(), file_info.zip_flag.ToString(), file_info.unzip_len.ToString(), file_info.crypto_flag.ToString(), file_info.ctl_flag.ToString() }); int result = this.m_sqlite_db.ExcuteQueryNoResult(replace_sql); bool debug_mode = this.m_debug_mode; if (debug_mode) { LogMgr.Log(string.Format("excute sql:{0}, result:{1}", replace_sql, result)); } result2 = (result == 0); } return(result2); }
private void InsertFile(string filePath) { Debug.Log(filePath); DbFileInfo file_info = new DbFileInfo(); file_info.hash_info = new PathHashInfo(); file_info.hash_info.hash0 = -567439084; file_info.hash_info.hash1 = -94960054; file_info.hash_info.hash2 = -1365269703; file_info.version = 1; file_info.file_name = "/client/assets/icon/0.png"; file_info.file_md5 = "BEAD7EDBF049F6E8CEADE7EC7D94EAC5"; file_info.data_type = 0; file_info.data_len = 17820; file_info.zip_flag = 0; file_info.unzip_len = 17820; file_info.crypto_flag = 0; file_info.ctl_flag = 0; string insert_sql = string.Format("insert into file_info( hash0, hash1, hash2, data_len, version, file_name, file_md5, data_type, zip_flag, unzip_len, crypto_flag, ctl_flag) values('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}', '{11}')", new object[] { file_info.hash_info.hash0.ToString(), file_info.hash_info.hash1.ToString(), file_info.hash_info.hash2.ToString(), file_info.data_len.ToString(), file_info.version.ToString(), file_info.file_name.ToString(), file_info.file_md5.ToString(), file_info.data_type.ToString(), file_info.zip_flag.ToString(), file_info.unzip_len.ToString(), file_info.crypto_flag.ToString(), file_info.ctl_flag.ToString() }); //db.ExcuteQueryNoResult(insert_sql); }
public bool Open(string fileName) { //! Open existed file _file = _dir.FileSet.SingleOrDefault(obj => obj.FileName.Equals(fileName)); return(_file != null); }
public static bool OpenCyMzq(string file_name, ref Dictionary <string, DbFileInfo> map) { FileStream fs = new FileStream(file_name, FileMode.Open); int nLength = (int)fs.Length; BinaryReader tmp_reader = new BinaryReader(fs); int unzip = tmp_reader.ReadInt32(); bool result; if (unzip == 0) { result = false; } else { int md5_data_size = 4; int version_data_size = 4; int len_data_size = 4; byte[] buffs = tmp_reader.ReadBytes(nLength - 4); int len = 0; byte[] DecompBuffs = Sqlite3tool.DecompNetBuffer(buffs, nLength, unzip, out len); if (unzip != len) { LogMgr.LogError("error: unzip != len"); } MemoryStream decomp_ms = new MemoryStream(DecompBuffs); BinaryReader decomp_reader = new BinaryReader(decomp_ms); int file_path_count = decomp_reader.ReadInt32(); int file_count = decomp_reader.ReadInt32(); byte[] file_path_byte = decomp_reader.ReadBytes(file_path_count); byte[] md5_code_byte = decomp_reader.ReadBytes(file_count * md5_data_size); byte[] version_byte = decomp_reader.ReadBytes(file_count * version_data_size); byte[] len_byte = decomp_reader.ReadBytes(file_count * len_data_size); MemoryStream md5_code_mem = new MemoryStream(md5_code_byte); BinaryReader md5_code_all = new BinaryReader(md5_code_mem); MemoryStream version_mem = new MemoryStream(version_byte); BinaryReader version_all = new BinaryReader(version_mem); MemoryStream len_mem = new MemoryStream(len_byte); BinaryReader len_all = new BinaryReader(len_mem); int file_path_begin_pos = 0; for (int index = 0; index < file_count; index++) { string file_path = ""; byte[] md5 = md5_code_all.ReadBytes(4); StringBuilder sb = new StringBuilder(); for (int i = 0; i < md5.Length; i++) { sb.Append(md5[i].ToString("X2")); } int version = version_all.ReadInt32(); int length = len_all.ReadInt32(); int end_pos = 0; Sqlite3tool.ParseFilePath(ref file_path_byte, file_path_begin_pos, file_path_count, out end_pos, out file_path); file_path_begin_pos = end_pos; DbFileInfo info = new DbFileInfo(); info.file_name = file_path; info.hash_info = DataEncrypt.GetPathHashInfo(file_path); info.version = version; info.data_len = length; info.unzip_len = length; info.file_md5 = sb.ToString(); map.Add(info.file_name, info); } fs.Close(); fs.Dispose(); result = true; } #if UNITY_EDITOR //ExportCyMzq(file_name); #endif return(result); }