public override async Task <Movies> GetMovieByName(NameMovie request, Grpc.Core.ServerCallContext context) { try { var httpContext = context.GetHttpContext(); var clientCertificate = httpContext.Connection.ClientCertificate; string url = "https://jsonmock.hackerrank.com/api/movies/search/?Title=" + request.Name; var response = await client.GetStringAsync(url); MoviesPage moviesPage = JsonConvert.DeserializeObject <MoviesPage>(response); //Verificar de precisa inicializar. Movies movies = new Movies(); movies.Total = moviesPage.Total; //Run the next iteration, because the first was executed for (int i = 2; i <= moviesPage.Total_pages; i++) { List <MovieData> movieData = new List <MovieData>(); movieData = await GetMoviebyNameAndPage(request.Name, i.ToString()); moviesPage.Data.AddRange(movieData); } foreach (var line in moviesPage.Data.GroupBy(movie => movie.Year) .Select(group => new { Year = group.Key, Count = group.Count() }) .OrderBy(x => x.Year)) { MoviesByYear moviesByYear = new MoviesByYear(); moviesByYear.Year = line.Year; moviesByYear.Movies = line.Count; movies.MoviesByYear.Add(moviesByYear); } return(movies); } catch (Exception ex) { throw new Exception("Erro ao pesquisar o filme " + request.Name + "." + "Excessão: " + ex.Message); } }
public static UserInfo GetTravelyUserInfo(this ServerCallContext context) => context.GetHttpContext().GetTravelyUserInfo();