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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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 }));
        }