Exemple #1
0
        internal bool AddObject(Obj obj, Stream stream)
        {
            if (obj == null)
            {
                throw new ArgumentNullException(nameof(obj));
            }
            if (String.IsNullOrEmpty(obj.GUID))
            {
                obj.GUID = Guid.NewGuid().ToString();
            }
            obj.BucketGUID = _Bucket.GUID;

            Obj test = GetObjectMetadata(obj.Key);

            if (test != null)
            {
                if (!_Bucket.EnableVersioning)
                {
                    _Logging.Warn("BucketClient Add versioning disabled and object " + _Bucket.Name + "/" + obj.Key + " already exists");
                    return(false);
                }

                obj.Version = (test.Version + 1);
            }
            else
            {
                obj.Version = 1;
            }

            obj.Md5 = Common.BytesToHexString(_StorageDriver.Write(obj.BlobFilename, obj.ContentLength, stream));

            if (String.IsNullOrEmpty(obj.Etag))
            {
                obj.Etag = obj.Md5;
            }

            DateTime ts = DateTime.Now.ToUniversalTime();

            obj.CreatedUtc    = ts;
            obj.LastAccessUtc = ts;
            obj.LastUpdateUtc = ts;
            obj.ExpirationUtc = null;

            _ORM.Insert <Obj>(obj);
            return(true);
        }