public async Task <IActionResult> Create(CreateFileRequestModel dto) { if (!ModelState.IsValid) { return(View(dto)); } if (!CheckFileExtension(dto.PrimaryImage?.FileName) || !CheckFileExtension(dto.SecondaryImage?.FileName)) { ViewData["Errors"] = new Error[] { new("Расширение файла должно быть .jpg, .jpeg или .png", "400") }; return(View(dto)); } var created = await _service.Create(User.GetId(), User.GetRole(), new AdvertDto() { Name = dto.Name, RequestType = dto.RequestType, ImpressingDateFrom = dto.ImpressingDateFrom, ImpressingDateTo = dto.ImpressingDateTo, ImpressingTimeFrom = dto.ImpressingTimeFrom, ImpressingTimeTo = dto.ImpressingTimeTo, ImpressingAlways = dto.ImpressingAlways, IsVisible = true }, dto.PrimaryImage.ToFile(), dto.SecondaryImage.ToFile()); if (!created.Ok) { ViewData["Errors"] = created.Errors; return(View(dto)); } return(RedirectToAction("Index")); }
public void CreateFileTest() { string projectUid = Guid.NewGuid().ToString(); var createFileRequestModel = new CreateFileRequestModel { FileName = "myFirstProject.dc" }; var createFileResponseModel = new CreateFileResponseModel { FileSpaceId = Guid.NewGuid().ToString(), UploadUrl = $"{createFileRequestModel.FileName} {projectUid}" }; string route = $"/projects/{TRNHelper.MakeTRN(projectUid)}/file"; var expectedUrl = $"{baseUrl}{route}"; mockServiceResolution.Setup(m => m.ResolveRemoteServiceEndpoint( It.IsAny <string>(), It.IsAny <ApiType>(), It.IsAny <ApiVersion>(), route, It.IsAny <IList <KeyValuePair <string, string> > >())).Returns(Task.FromResult(expectedUrl)); MockUtilities.TestRequestSendsCorrectJson("Create a file", mockWebRequest, null, expectedUrl, HttpMethod.Post, createFileResponseModel, async() => { var client = ServiceProvider.GetRequiredService <ICwsDesignClient>(); var result = await client.CreateFile(new Guid(projectUid), createFileRequestModel); Assert.NotNull(result); Assert.Equal(createFileResponseModel.FileSpaceId, result.FileSpaceId); return(true); }); }
/// <summary> /// user token /// used by ProjectSvc v6 and v5TBC /// </summary> public async Task <CreateFileResponseModel> CreateFile(Guid projectUid, CreateFileRequestModel createFileRequest, IHeaderDictionary customHeaders = null) { log.LogDebug($"{nameof(CreateFile)}: createFileRequest {JsonConvert.SerializeObject(createFileRequest)}"); var projectTrn = TRNHelper.MakeTRN(projectUid); var createFileResponse = await PostData <CreateFileRequestModel, CreateFileResponseModel>($"/projects/{projectTrn}/file", createFileRequest, null, customHeaders); log.LogDebug($"{nameof(CreateFile)}: createFileResponse {JsonConvert.SerializeObject(createFileResponse)}"); return(createFileResponse); }
public CreateFileResponseModel CreateFile(string projectTrn, [Mvc.FromBody] CreateFileRequestModel createFileRequest) { var createFileResponse = new CreateFileResponseModel { FileSpaceId = Guid.NewGuid().ToString(), UploadUrl = $"{_baseUrl}/another_fake_upload_signed_url" }; Logger.LogInformation($"{nameof(CreateFile)}: projectTrn {projectTrn} createFileRequest {JsonConvert.SerializeObject(createFileRequest)} createFileResponse {JsonConvert.SerializeObject(createFileResponse)}"); _fileSpaceIdNameMap.Add(createFileResponse.FileSpaceId, $"{projectTrn}||{DateTime.UtcNow}||{createFileRequest.FileName}"); return(createFileResponse); }
public Task <CreateFileResponseModel> CreateAndUploadFile(Guid projectUid, CreateFileRequestModel createFileRequest, Stream fileContents, IHeaderDictionary customHeaders = null) { log.LogDebug($"{nameof(CreateAndUploadFile)} Mock: createFileRequest {JsonConvert.SerializeObject(createFileRequest)}"); var createFileResponse = new CreateFileResponseModel { FileSpaceId = Guid.NewGuid().ToString(), UploadUrl = "uploadurl: FileSpaceId" }; log.LogDebug($"{nameof(CreateAndUploadFile)} Mock: createFileResponse {JsonConvert.SerializeObject(createFileResponse)}"); return(Task.FromResult(createFileResponse)); }
public async Task CreateFileTest() { // test requires a user token. var projectUid = new Guid(myStagingProject); var createFileRequestModel = new CreateFileRequestModel { FileName = "myFirstProject.dc" }; var client = ServiceProvider.GetRequiredService <ICwsDesignClient>(); try { var result = await client.CreateFile(projectUid, createFileRequestModel, CustomHeaders()); } catch (Exception e) { Assert.Contains(HttpStatusCode.BadRequest.ToString(), e.Message); Assert.Contains(":9056,", e.Message); /* * This call returns: (possibly because this is application context?) * BadRequest {"status":400,"code":9056,"message":"Bad request","moreInfo":"Please provide this id to support, while contacting, TraceId 5e9a82a7ad9caf287518ec873da80845","timestamp":1587184295988} * * Postman returns: * { * "status": 400, * "code": 9006, * "message": "Account not found or not active", * "moreInfo": "Please provide this id to support, while contacting, TraceId 5e9a80357074c0914b66ae9cdcf6dfa7", * "timestamp": 1587183669699, * "fieldErrors": [ * { * "field": "accountId", * "attemptedValue": "trn::profilex:us-west-2:account:158ef953-4967-4af7-81cc-952d47cb6c6" * } * ] * } */ } //Assert.NotNull(result); //Assert.NotNull(result.Id); }
public void CreateAndUploadFileTest() { string projectUid = Guid.NewGuid().ToString(); var createFileRequestModel = new CreateFileRequestModel { FileName = "myFirstProject.dc" }; var uploadUrl = $"{createFileRequestModel.FileName} {projectUid}"; var createFileResponseModel = new CreateFileResponseModel { FileSpaceId = Guid.NewGuid().ToString(), UploadUrl = uploadUrl }; var fileContents = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; string route = $"/projects/{TRNHelper.MakeTRN(projectUid)}/file"; var expectedUrl = $"{baseUrl}{route}"; mockServiceResolution.Setup(m => m.ResolveRemoteServiceEndpoint( It.IsAny <string>(), It.IsAny <ApiType>(), It.IsAny <ApiVersion>(), route, It.IsAny <IList <KeyValuePair <string, string> > >())).Returns(Task.FromResult(expectedUrl)); var expectedContent = new StringContent("Dummy"); mockWebRequest.Setup(s => s.ExecuteRequestAsStreamContent(uploadUrl, HttpMethod.Put, It.IsAny <IHeaderDictionary>(), It.IsAny <Stream>(), null, 3, false)) .Returns(Task.FromResult(expectedContent as HttpContent)); MockUtilities.TestRequestSendsCorrectJson("Create and upload a file", mockWebRequest, null, expectedUrl, HttpMethod.Post, createFileResponseModel, async() => { var client = ServiceProvider.GetRequiredService <ICwsDesignClient>(); using (var ms = new MemoryStream(fileContents)) { var result = await client.CreateAndUploadFile(new Guid(projectUid), createFileRequestModel, ms); Assert.NotNull(result); Assert.Equal(createFileResponseModel.FileSpaceId, result.FileSpaceId); } return(true); }); }
/// <summary> /// Creates file metadata in Data Ocean through CWS then uploads file contents. /// </summary> public async Task <CreateFileResponseModel> CreateAndUploadFile(Guid projectUid, CreateFileRequestModel createFileRequest, Stream fileContents, IHeaderDictionary customHeaders = null) { log.LogDebug($"{nameof(CreateAndUploadFile)}: createFileRequest {JsonConvert.SerializeObject(createFileRequest)}"); var projectTrn = TRNHelper.MakeTRN(projectUid); var createFileResponse = await PostData <CreateFileRequestModel, CreateFileResponseModel>($"/projects/{projectTrn}/file", createFileRequest, null, customHeaders); //We won't monitor status of upload as calibration/config files are small so should be quick. //And this will be called as part of project creation. //TODO: revisit when other project files are uploaded. See Data Ocean client - 3 steps: create file, call upload, monitor upload status. await UploadData(createFileResponse.UploadUrl, fileContents, customHeaders); log.LogDebug($"{nameof(CreateAndUploadFile)}: createFileResponse {JsonConvert.SerializeObject(createFileResponse)}"); return(createFileResponse); }