コード例 #1
0
        public IActionResult Index(string imdbIdParam)
        {
            if (string.IsNullOrEmpty(imdbIdParam))
            {
                return(View(null));
            }

            var            moviesInstance = new MoviesManager();
            IMovieFullInfo movie          = moviesInstance.GetMovieInfo(imdbIdParam);

            string imdbUrl = HelperMethods.GetAppConfigValue("imdbUrl");

            ViewBag.ImDbUrl = imdbUrl += movie.ImdbID;

            return(View(movie));
        }
コード例 #2
0
        /// <summary>
        /// Gets the movie full information.
        /// </summary>
        /// <param name="imdbId">The imdb identifier.</param>
        public IMovieFullInfo GetMovie(string imdbId)
        {
            // validate
            if (string.IsNullOrEmpty(imdbId))
            {
                throw new ApiException(400, $"Missing required parameter {nameof(imdbId)}");
            }

            if (string.IsNullOrEmpty(apiKey))
            {
                throw new ApiException(400, $"Missing required parameter {nameof(apiKey)}");
            }

            var path         = "";
            var queryParams  = new Dictionary <string, string>();
            var headerParams = new Dictionary <string, string>();
            var formParams   = new Dictionary <string, string>();

            queryParams.Add("i", imdbId);
            queryParams.Add("r", "json");
            queryParams.Add("apikey", apiKey);

            // make the HTTP request
            IRestResponse response = (IRestResponse)apiClient.CallApi(path, Method.GET, queryParams, headerParams, formParams, null);

            if (((int)response.StatusCode) > 400)
            {
                throw new ApiException((int)response.StatusCode, "Error calling OMDB API: " + response.Content, response.Content);
            }
            else if (response.StatusCode == 0)
            {
                throw new ApiException((int)response.StatusCode, "Error calling OMDB API: " + response.ErrorMessage, response.ErrorMessage);
            }

            // deserialize
            IMovieFullInfo result = JsonConvert.DeserializeObject <SingleMovieResponse>(response.Content, new JsonSerializerSettings
            {
                TypeNameHandling = TypeNameHandling.Auto
            });

            return(result);
        }
コード例 #3
0
ファイル: MoviesManager.cs プロジェクト: pnedov/NetCore
        /// <summary>
        /// Gets the movie information.
        /// </summary>
        /// <param name="imbdId">The imbd identifier.</param>
        public IMovieFullInfo GetMovieInfo(string imbdId)
        {
            var            dbInstance  = new DbManager();
            IMovieFullInfo movieFromDb = dbInstance.GetMovieByImdbId(imbdId);

            // gets movie info from db
            if (movieFromDb != null)
            {
                return(movieFromDb);
            }

            // gets movie info from api
            var            service      = new MovieBoxApiService();
            IMovieFullInfo movieFromApi = service.GetMovie(imbdId);

            if (movieFromApi != null)
            {
                dbInstance.AddMovie(movieFromApi);
            }

            return(movieFromApi);
        }
コード例 #4
0
        /// <summary>
        /// Adds the movie.
        /// </summary>
        /// <param name="movieFromApi">The movie from API.</param>
        public void AddMovie(IMovieFullInfo movieFromApi)
        {
            using (var connection = new SqlConnection(connectionString))
            {
                connection.Open();
                string sql     = $@"
          INSERT INTO Movies (
             imdb_id, title ,year
             ,rated ,released ,runtime
             ,genre ,director ,writer
             ,actors ,plot ,language
             ,country ,awards ,poster
             ,metascore ,imdb_rating ,imdb_votes
             ,type ,dvd_release_date ,boxoffice
             ,production,website ,response ) 
          VALUES (
              @ImdbID
             ,@Title
             ,'{movieFromApi.Year}'
             ,'{movieFromApi.Rated}'
             ,@Released
             ,'{movieFromApi.Runtime}'
             ,'{movieFromApi.Genre}'
             ,@Director
             ,@Writer
             ,@Actors
             ,@Plot
             ,'{movieFromApi.Language}'
             ,@Country
             ,'{movieFromApi.Awards}'
             ,'{movieFromApi.Poster}'
             ,{movieFromApi.Metascore}
             ,{movieFromApi.ImdbRating}
             ,{movieFromApi.ImdbVotes}
             ,'{movieFromApi.Type}'
             ,@ReleaseDateDvd
             ,'{movieFromApi.BoxOffice}'
             ,'{movieFromApi.Production}'
             ,'{movieFromApi.Website}'
             ,@Response);

          SELECT SCOPE_IDENTITY();";
                var    command = new SqlCommand(sql, connection);
                command.Parameters.Add("@ImdbID", SqlDbType.VarChar, 50).Value    = movieFromApi.ImdbID;
                command.Parameters.Add("@Director", SqlDbType.VarChar, 150).Value = movieFromApi.Director;
                command.Parameters.Add("@Writer", SqlDbType.VarChar, 350).Value   = movieFromApi.Writer;
                command.Parameters.Add("@Title", SqlDbType.VarChar, 150).Value    = movieFromApi.Title;
                command.Parameters.Add("@Actors", SqlDbType.VarChar, 350).Value   = movieFromApi.Actors;
                command.Parameters.Add("@Plot", SqlDbType.VarChar, 250).Value     = movieFromApi.Plot;
                command.Parameters.Add("@Country", SqlDbType.VarChar, 100).Value  = movieFromApi.Country;
                command.Parameters.AddWithValue("@Released", movieFromApi.Released);
                command.Parameters.AddWithValue("@ReleaseDateDvd", movieFromApi.ReleaseDateDvd);
                command.Parameters.AddWithValue("@Response", movieFromApi.Response);
                object objId = command.ExecuteScalar();

                // add records to related Ratings table
                if (objId != null)
                {
                    int movieId = Convert.ToInt32(objId);
                    foreach (IRating rating in movieFromApi.Ratings)
                    {
                        sql = $@"
              INSERT INTO Ratings (
                 source
                 ,value
                 ,movie_id)
              VALUES (
                  '{rating.Source}'
                 ,'{rating.Value}'
                 ,{movieId}
              )";

                        var commandRating = new SqlCommand(sql, connection);
                        commandRating.ExecuteNonQuery();
                    }
                }
            }
        }