public ActionResult <YoutubeTrendingVideo> Post([FromBody] YoutubeTrendingVideo newVideo)
        {
            // Add schema header related to accept data type
            this.HttpContext.Request.Headers.TryGetValue("Accept", out var accept);

            switch (accept)
            {
            case "application/json":
                Response.Headers.Add("link", JSON_SCHEMA);
                break;

            case "application/xml":
                Response.Headers.Add("link", XML_SCHEMA);
                break;

            default:
                return(BadRequest("Invalid accept header! (application/xml OR application/json)"));
            }

            // check ID
            // error on exist
            // return new object on success.
            if (database.Youtube.Any(x =>
                                     x.VideoId == newVideo.VideoId &&
                                     x.CountryCode.ToLower() == newVideo.CountryCode.ToLower() &&
                                     x.TrendingDate == newVideo.TrendingDate))
            {
                return(Conflict("Video with this date/region/id combo already exists!"));
            }

            database.Youtube.Add(newVideo);
            database.SaveChanges();

            return(newVideo);
        }
        public ActionResult <YoutubeTrendingVideo> Put([FromBody] YoutubeTrendingVideo updatedVideo)
        {
            // Add schema header related to accept data type
            this.HttpContext.Request.Headers.TryGetValue("Accept", out var accept);

            switch (accept)
            {
            case "application/json":
                Response.Headers.Add("link", JSON_SCHEMA);
                break;

            case "application/xml":
                Response.Headers.Add("link", XML_SCHEMA);
                break;

            default:
                return(BadRequest("Invalid accept header! (application/xml OR application/json)"));
            }

            if (!database.Youtube.Any(x =>
                                      x.VideoId == updatedVideo.VideoId &&
                                      x.CountryCode.ToLower() == updatedVideo.CountryCode.ToLower() &&
                                      x.TrendingDate == updatedVideo.TrendingDate))
            {
                return(Conflict("No such video to update!"));
            }

            var oldVideo = database.Youtube.First(x =>
                                                  x.VideoId == updatedVideo.VideoId &&
                                                  x.CountryCode.ToLower() == updatedVideo.CountryCode.ToLower() &&
                                                  x.TrendingDate == updatedVideo.TrendingDate);

            database.Youtube.Update(updatedVideo);
            database.SaveChanges();

            return(oldVideo);
        }