package tv.pluto.grpc.languages;

import static tv.pluto.ip.dal.language.LanguageManagerGrpc.LanguageManagerBlockingStub;

import io.grpc.Channel;
import tv.pluto.grpc.GenericGrpcClient;
import tv.pluto.ip.dal.language.LanguageManagerGrpc;
import tv.pluto.ip.dal.language.Languages.GetLanguageByAttributeRequest;
import tv.pluto.ip.dal.language.Languages.GetLanguageByAttributeResponse;
import tv.pluto.ip.dal.language.Languages.GetLanguagesRequest;
import tv.pluto.ip.dal.language.Languages.GetLanguagesResponse;

public class LanguagesClient extends GenericGrpcClient {

  private LanguageManagerBlockingStub blockingStub;

  public LanguagesClient(Channel channel) {
    blockingStub = LanguageManagerGrpc.newBlockingStub(channel);
    blockingStub = blockingStub.withInterceptors(CLIENT_INTERCEPTOR);
  }

  public GetLanguagesResponse getLanguages() {
    return blockingStub.getLanguages(GetLanguagesRequest.newBuilder().build());
  }

  public GetLanguageByAttributeResponse getLanguageByAttribute(String attribute, String value) {
    GetLanguageByAttributeRequest request =
        GetLanguageByAttributeRequest.newBuilder().setAttribute(attribute).setValue(value).build();

    return blockingStub.getLanguageByAttribute(request);
  }
}
