public async Task <string> SaveSnippetAsync( IEnumerable <CodeFile> codeFiles, IEnumerable <Package> installedPackages, StaticAssets staticAssets) { if (codeFiles == null) { throw new ArgumentNullException(nameof(codeFiles)); } var codeFilesValidationError = CodeFilesHelper.ValidateCodeFilesForSnippetCreation(codeFiles); if (!string.IsNullOrWhiteSpace(codeFilesValidationError)) { throw new InvalidOperationException(codeFilesValidationError); } var packagesValidationError = PackagesHelper.ValidatePackagesForSnippetCreation(installedPackages); if (!string.IsNullOrWhiteSpace(packagesValidationError)) { throw new InvalidOperationException(packagesValidationError); } var staticAssetsValidationError = StaticAssetsHelper.ValidateStaticAssetsForSnippetCreation(staticAssets); if (!string.IsNullOrWhiteSpace(staticAssetsValidationError)) { throw new InvalidOperationException(staticAssetsValidationError); } var requestData = new CreateSnippetRequest { Files = codeFiles, InstalledPackages = installedPackages, StaticAssets = staticAssets, }; var response = await this.httpClient.PostAsJsonAsync(this.snippetsOptions.CreateUrl, requestData); response.EnsureSuccessStatusCode(); var id = await response.Content.ReadAsStringAsync(); return(id); }
public Snippet Create(CreateSnippetRequest request) { Snippet snippet = new Snippet(); int snippetCount = _snippetRepository.GetSnippets().Count(); snippet.Name = request.Name; snippet.CreatorEmail = request.CreatorEmail; snippet.Hash = GenerateHash(snippetCount); snippet.Content = request.Content; snippet.CreationTime = _dateTime.Now.ToString("g"); snippet.LastModified = snippet.CreationTime; _snippetRepository.InsertSnippet(snippet); return(snippet); }
public ActionResult CreateSnippet(CreateSnippetRequest snippetRequest) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Snippet snippet = _snippetService.Create(snippetRequest); //if it has no creatorEmail then create a job to destroy if after 10 minutes if (string.IsNullOrEmpty(snippetRequest.CreatorEmail)) { BackgroundJob.Schedule( () => _snippetService.DeleteSnippet(snippet.Hash), TimeSpan.FromMinutes(10)); } return(new JsonResult(new { status = HttpStatusCode.Created, hash = snippet.Hash })); }