/// <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()); }
/// <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); }
/// <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); }