package tv.pluto.grpc.genres;

import io.grpc.Channel;
import tv.pluto.grpc.GenericGrpcClient;
import tv.pluto.ip.dal.genre.GenreManagerGrpc;
import tv.pluto.ip.dal.genre.Genres;
import tv.pluto.ip.dal.genre.Genres.GetGenreSubGenreMapRequest;
import tv.pluto.ip.dal.genre.Genres.GetGenresRequest;
import tv.pluto.ip.dal.genre.Genres.GetGenresResponse;
import tv.pluto.ip.dal.genre.Genres.GetSubGenresByGenreRequest;
import tv.pluto.ip.dal.genre.Genres.GetSubGenresByGenreResponse;

public class GenresClient extends GenericGrpcClient {

  GenreManagerGrpc.GenreManagerBlockingStub blockingStub;

  public GenresClient(Channel channel) {
    blockingStub = GenreManagerGrpc.newBlockingStub(channel);
    blockingStub = blockingStub.withInterceptors(CLIENT_INTERCEPTOR);
  }

  public GetGenresResponse getGenres() {
    return blockingStub.getGenres(GetGenresRequest.newBuilder().build());
  }

  public GetSubGenresByGenreResponse getSubGenresByGenre(String genre) {
    GetSubGenresByGenreRequest request =
        GetSubGenresByGenreRequest.newBuilder().setGenre(genre).build();

    return blockingStub.getSubGenresByGenre(request);
  }

  public Genres.GetGenreSubGenreMapResponse getGenreSubGenreMap() {
    return blockingStub.getGenreSubGenreMap(GetGenreSubGenreMapRequest.newBuilder().build());
  }

  public Genres.GetTranslationsResponse getTranslationsResponse() {
    Genres.GetTranslationsRequest request = Genres.GetTranslationsRequest.newBuilder().build();
    return blockingStub.getTranslations(request);
  }
}
