コード例 #1
0
        public async Task CreateDemo(DemoDto demoDto, string filePath)
        {
            var blobKey = demoDto.FileName;

            var blobServiceClient = new BlobServiceClient(_options.StorageConnectionString);
            var containerClient   = blobServiceClient.GetBlobContainerClient(_options.StorageContainerName);

            await containerClient.CreateIfNotExistsAsync(PublicAccessType.Blob);

            var blobClient = containerClient.GetBlobClient(blobKey);

            var data = File.ReadAllBytes(filePath);
            await blobClient.UploadAsync(new MemoryStream(data));

            var demo = new Demoes
            {
                DemoId   = Guid.NewGuid(),
                Game     = demoDto.Game,
                Name     = demoDto.Name,
                FileName = demoDto.FileName,
                Date     = demoDto.Date,
                Map      = demoDto.Map,
                Mod      = demoDto.Mod,
                GameType = demoDto.GameType,
                Server   = demoDto.Server,
                Size     = demoDto.Size,
                User     = await _legacyContext.AspNetUsers.SingleAsync(u => u.XtremeIdiotsId == demoDto.UserId)
            };

            _legacyContext.Demoes.Add(demo);
            await _legacyContext.SaveChangesAsync();
        }
コード例 #2
0
ファイル: DemoController.cs プロジェクト: zz110/Demo-Code
        public ActionResult <string> saveData(DemoDto data)
        {
            DemoDBContext dc     = new DemoDBContext();
            bool          result = dc.saveData(data).GetAwaiter().GetResult();

            if (result)
            {
                return("OK");
            }
            return("ERROR");
        }
コード例 #3
0
        internal async Task <bool> saveData(DemoDto data)
        {
            Demo new_item = new Demo()
            {
                _id            = ObjectId.GenerateNewId(),
                demo_user_name = data.demo_user_name,
                demo_user_age  = data.demo_user_age,
            };

            bool result = await CreateAsync(new_item);

            return(result);
        }
コード例 #4
0
ファイル: HomeController.cs プロジェクト: topalach/demo
        public IActionResult GetDemo(DemoLanguage language, string categoryName, string demoName)
        {
            var demo = _demoContainer.GetDemo(language, categoryName, demoName);

            if (demo == null)
            {
                return(NotFound());
            }

            var dto = DemoDto.FromModel(demo);

            dto.StudioUrl = GetStudioUrl(demo);

            return(Ok(dto));
        }
コード例 #5
0
 public PortalDemoDto(DemoDto demo)
 {
     DemoId     = demo.DemoId;
     Game       = demo.Game.ToString();
     Name       = demo.Name;
     FileName   = demo.FileName;
     Date       = demo.Date;
     Map        = demo.Map;
     Mod        = demo.Mod;
     GameType   = demo.GameType;
     Server     = demo.Server;
     Size       = demo.Size;
     UserId     = demo.UserId;
     UploadedBy = demo.UploadedBy;
 }
 public async Task <IActionResult> Export()
 {
     try
     {
         var demoDto = new DemoDto()
         {
             Welcome = "Lorem Ipsum", HelloWorld = "Hello World!!!"
         };
         return(Ok(demoDto));
     }
     catch (Exception ex)
     {
         //log the exception
         return(BadRequest());
     }
 }
コード例 #7
0
        public IActionResult GetDemo(DemoLanguage language, string categoryName, string demoName)
        {
            try
            {
                var demo = _demoContainer.GetDemo(language, categoryName, demoName);
                var dto  = DemoDto.FromModel(demo);

                dto.StudioUrl = GetStudioUrl(demo);

                return(Ok(dto));
            }
            catch (InvalidOperationException e)
            {
                _logger.LogError(e, "An error occured during demo fetching.");
                return(NotFound());
            }
        }
コード例 #8
0
        internal async Task <IEnumerable <DemoDto> > getAllData()
        {
            var fetch_data = await SelectAllAsync();

            List <DemoDto> result_list = new List <DemoDto>();

            fetch_data.ForEach(p =>
            {
                DemoDto new_item = new DemoDto()
                {
                    demo_user_name = p.demo_user_name,
                    demo_user_age  = p.demo_user_age,
                };
                result_list.Add(new_item);
            });
            return(result_list);
        }
コード例 #9
0
        public static DemoDto ToDto(this Demoes demo)
        {
            var demoDto = new DemoDto
            {
                DemoId   = demo.DemoId,
                Game     = demo.Game,
                Name     = demo.Name,
                FileName = demo.FileName,
                Date     = demo.Date,
                Map      = demo.Map,
                Mod      = demo.Mod,
                GameType = demo.GameType,
                Server   = demo.Server,
                Size     = demo.Size,

                UserId     = demo.User.XtremeIdiotsId,
                UploadedBy = demo.User.UserName
            };

            return(demoDto);
        }
コード例 #10
0
        async Task <DemoDto> GetDemoAsync(string path)
        {
            HttpClient client = new HttpClient();

            // Update port # in the following line.
            var baseUrl = _config.GetValue <string>("HttpUrl:Demo");

            client.BaseAddress = new Uri(baseUrl);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));

            DemoDto             demo     = null;
            HttpResponseMessage response = await client.GetAsync(path);

            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();

                demo = JsonConvert.DeserializeObject <DemoDto>(content);
            }

            return(demo);
        }
 public IActionResult ModelValidationDemo(DemoDto dto)
 {
     return(Ok(dto));
 }
コード例 #12
0
 public IActionResult Name([FromBody] DemoDto name)
 {
     return(View(name));
 }
コード例 #13
0
 public IActionResult Demo([FromBody] DemoDto demo)
 {
     return(View(demo));
 }
コード例 #14
0
        public async Task <ActionResult> ClientUploadDemo(IFormFile file)
        {
            if (!Request.Headers.ContainsKey("demo-manager-auth-key"))
            {
                return(Content("AuthError: No auth key provided in the request. This should be set in the client."));
            }

            var authKey = Request.Headers["demo-manager-auth-key"].FirstOrDefault();

            if (string.IsNullOrWhiteSpace(authKey))
            {
                _logger.LogDebug(EventIds.DemoManager, "ClientUploadDemo - Auth key header supplied was empty");
                return(Content("AuthError: The auth key supplied was empty. This should be set in the client."));
            }

            var userId = await _demoAuthRepository.GetUserId(authKey);

            if (userId == null)
            {
                return(Content("AuthError: Your auth key is incorrect, check the portal for the correct one and re-enter it on your client."));
            }

            var user = await _userManager.FindByIdAsync(userId);

            if (file == null || file.Length == 0)
            {
                return(Content("You must provide a file to be uploaded"));
            }

            var whitelistedExtensions = new List <string> {
                ".dm_1", ".dm_6"
            };

            if (!whitelistedExtensions.Any(ext => file.FileName.EndsWith(ext)))
            {
                return(Content("Invalid file type - this must be a demo file"));
            }

            var gameTypeHeader = Request.Headers["demo-manager-game-type"].ToString();

            Enum.TryParse(gameTypeHeader, out GameType gameType);

            var fileName = $"{Guid.NewGuid().ToString()}.{gameType.DemoExtension()}";
            var path     = Path.Combine(Path.GetTempPath(), fileName);

            await using (var fileStream = new FileStream(path, FileMode.Create))
            {
                await file.CopyToAsync(fileStream);
            }

            var localDemo        = new LocalDemo(path, gameType);
            var frontEndFileName = Path.GetFileNameWithoutExtension(file.FileName);

            var demoDto = new DemoDto
            {
                Game     = gameType,
                Name     = frontEndFileName,
                FileName = fileName,
                Date     = localDemo.Date,
                Map      = localDemo.Map,
                Mod      = localDemo.Mod,
                GameType = localDemo.GameType,
                Server   = localDemo.Server,
                Size     = localDemo.Size,
                UserId   = user.Id
            };

            await _demosRepository.CreateDemo(demoDto, path);

            _logger.LogInformation(EventIds.DemoManager, "User {Username} has uploaded a new demo {FileName}", user.UserName, demoDto.FileName);

            return(Ok());
        }