Exemple #1
0
        /// <summary>
        /// Gets the movie information.
        /// </summary>
        /// <param name="imbdId">The imbd identifier.</param>
        public MovieFullInfo GetMovieInfo(string imbdId)
        {
            // gets movie info from db
            var             dbInstance  = new DbManager();
            DbMovieFullInfo movieFromDb = dbInstance.GetMovieByImdbId(imbdId);
            MovieFullInfo   movie       = MapFullMovieDbEntitieToBl(movieFromDb);

            if (movie != null)
            {
                return(movie);
            }

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

            if (movieFromApi != null)
            {
                DbMovieFullInfo dbMoveEntity = MapApiFullInfoMovieToDb(movieFromApi);

                // add movie to db
                dbInstance.AddMovie(dbMoveEntity);
                MovieFullInfo movieBl = MapFullMovieDbEntitieToBl(dbMoveEntity);

                return(movieBl);
            }

            return(new MovieFullInfo());
        }
Exemple #2
0
        /// <summary>
        /// Maps the API full information movie to database.
        /// </summary>
        /// <param name="movieFromApi">The movie from API.</param>
        private DbMovieFullInfo MapApiFullInfoMovieToDb(ApiMovieFullInfo movieFromApi)
        {
            var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <ApiMovieFullInfo, DbMovieFullInfo>();
                cfg.CreateMap <ApiRating, DbRating>();
            });

            config.AssertConfigurationIsValid();

            IMapper         iMapper     = config.CreateMapper();
            DbMovieFullInfo destination = iMapper.Map <ApiMovieFullInfo, DbMovieFullInfo>(movieFromApi);

            return(destination);
        }
Exemple #3
0
        /// <summary>
        /// Gets the movie full information.
        /// </summary>
        /// <param name="imdbId">The imdb identifier.</param>
        public ApiMovieFullInfo 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
            ApiMovieFullInfo result = JsonConvert.DeserializeObject <ApiMovieFullInfo>(response.Content, new JsonSerializerSettings
            {
                TypeNameHandling = TypeNameHandling.Auto
            });

            return(result);
        }