コード例 #1
0
        public async Task CreateFile(string branchName, string path, HttpRequestMessage data)
        {
            var fileName = Path.GetFileName(path);

            //Create meta to store it in elasticsearch
            var id   = Guid.NewGuid().ToString("N");
            var file = new Metafile
            {
                Id        = id,
                CreatedOn = DateTime.UtcNow,
                Filename  = fileName,
                Path      = path == "" ? "" : path,
                BranchId  = branchName,
                MD5Hash   = ""
            };

            await _assetsStorage.UploadFile(branchName, path, file, data);

            // Check if possible to create file before upload
            try
            {
                await _assetsStorage.CreateFile(file);
            }
            catch (BranchException)
            {
                var resp = new HttpResponseMessage(System.Net.HttpStatusCode.Conflict)
                {
                    Content      = new StringContent($"{branchName} already exist !"),
                    ReasonPhrase = $"{branchName} already exist !"
                };
                throw new HttpResponseException(resp);
            }
            catch (FileException)
            {
                var resp = new HttpResponseMessage(System.Net.HttpStatusCode.Conflict)
                {
                    Content      = new StringContent($"File : {path} already exist !"),
                    ReasonPhrase = $"File : {path} already exist !"
                };
                throw new HttpResponseException(resp);
            }
            catch (ElasticsearchException)
            {
                var resp = new HttpResponseMessage(System.Net.HttpStatusCode.InternalServerError)
                {
                    Content      = new StringContent($"Internal data base error please check server logs"),
                    ReasonPhrase = $"Internal data base error please check server logs"
                };
                throw new HttpResponseException(resp);
            }
        }