예제 #1
0
        public async Task <IActionResult> PutMemeItem([FromRoute] int id, [FromBody] MemeItem memeItem)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != memeItem.Id)
            {
                return(BadRequest());
            }

            _context.Entry(memeItem).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MemeItemExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
예제 #2
0
        public async Task <IActionResult> PostMemeItem([FromBody] MemeItem memeItem)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.MemeItem.Add(memeItem);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetMemeItem", new { id = memeItem.Id }, memeItem));
        }
예제 #3
0
        public async Task TestPutMemeItemUpdate()
        {
            using (var context = new MemeApiContext(options))
            {
                // Given
                string   title     = "putMeme";
                MemeItem memeItem1 = context.MemeItem.Where(x => x.Title == memeTitles[0]).Single();
                memeItem1.Title = title;

                // When
                MemeController memeController = new MemeController(context, configuration);
                IActionResult  result         = await memeController.PutMemeItem(memeItem1.Id, memeItem1) as IActionResult;

                // Then
                memeItem1 = context.MemeItem.Where(x => x.Title == title).Single();
            }
        }
예제 #4
0
        public async Task TestPutMemeItemNoContentStatusCode()
        {
            using (var context = new MemeApiContext(options))
            {
                // Given
                string   title     = "putMeme";
                MemeItem memeItem1 = context.MemeItem.Where(x => x.Title == memeTitles[0]).Single();
                memeItem1.Title = title;

                // When
                MemeController memeController = new MemeController(context, configuration);
                IActionResult  result         = await memeController.PutMemeItem(memeItem1.Id, memeItem1) as IActionResult;

                // Then
                Assert.IsNotNull(result);
                Assert.IsInstanceOfType(result, typeof(NoContentResult));
            }
        }
예제 #5
0
        public void SetupDb()
        {
            using (var context = new MemeApiContext(options))
            {
                MemeItem memeItem1 = new MemeItem()
                {
                    Title = memeTitles[0]
                };

                MemeItem memeItem2 = new MemeItem()
                {
                    Title = memeTitles[1]
                };

                context.MemeItem.Add(memeItem1);
                context.MemeItem.Add(memeItem2);
                context.SaveChanges();
            }
        }
예제 #6
0
        public async Task <IActionResult> UploadFile([FromForm] MemeImageItem meme)
        {
            if (!MultipartRequestHelper.IsMultipartContentType(Request.ContentType))
            {
                return(BadRequest($"Expected a multipart request, but got {Request.ContentType}"));
            }
            try
            {
                using (var stream = meme.Image.OpenReadStream())
                {
                    var cloudBlock = await UploadToBlob(meme.Image.FileName, null, stream);

                    //// Retrieve the filename of the file you have uploaded
                    //var filename = provider.FileData.FirstOrDefault()?.LocalFileName;
                    if (string.IsNullOrEmpty(cloudBlock.StorageUri.ToString()))
                    {
                        return(BadRequest("An error has occured while uploading your file. Please try again."));
                    }

                    MemeItem memeItem = new MemeItem();
                    memeItem.Title = meme.Title;
                    memeItem.Tags  = meme.Tags;

                    System.Drawing.Image image = System.Drawing.Image.FromStream(stream);
                    memeItem.Height   = image.Height.ToString();
                    memeItem.Width    = image.Width.ToString();
                    memeItem.Url      = cloudBlock.SnapshotQualifiedUri.AbsoluteUri;
                    memeItem.Uploaded = DateTime.Now.ToString();

                    _context.MemeItem.Add(memeItem);
                    await _context.SaveChangesAsync();

                    return(Ok($"File: {meme.Title} has successfully uploaded"));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest($"An error has occured. Details: {ex.Message}"));
            }
        }