Как правильно создать запрос к API Тинькофф через gRPC?

Как правильно завершить реализацию метода `Currencies` сервиса `InstrumentsService` в клиенте gRPC для TINKOFF INVEST API? В коде уже созданы необходимые объекты, но возникают затруднения в обработке результата. Я хочу перебрать полученный список инструментов. Официальная SDK отсутствует, поэтому приходится разрабатывать без нее. Буду благодарен за помощь с приведением кода в порядок и указанием направления для дальнейших действий.
  • 5 апреля 2024 г. 15:09
Ответы на вопрос 2
Для создания запроса к API Тинькофф через gRPC, вам необходимо использовать protobuf-схему, которая описывает сообщения и сервисы, доступные через gRPC. Для работы с gRPC вам также потребуется сгенерированный клиентский код на основе этой protobuf-схемы.

Пример создания запроса к API Тинькофф через gRPC:

1. Создайте protobuf-схему, описывающую сервисы и сообщения API Тинькофф.

2. Сгенерируйте клиентский код на основе protobuf-схемы с помощью компилятора protoc.

3. Используйте сгенерированный клиентский код для создания gRPC-запросов к API Тинькофф.

Пример завершения реализации метода `Currencies` сервиса `InstrumentsService` в клиенте gRPC для TINKOFF INVEST API:

```java
public void getCurrencies() {
    InstrumentsServiceGrpc.InstrumentsServiceBlockingStub stub = InstrumentsServiceGrpc.newBlockingStub(channel);

    CurrenciesResponse response = stub.currencies(CurrenciesRequest.newBuilder().build());

    List<Currency> currencies = response.getCurrenciesList();

    for (Currency currency : currencies) {
        System.out.println("Currency: " + currency.getName() + " - " +
                currency.getTicker() + " - " + currency.getIsin());
    }
}
```

В данном коде мы создаем gRPC-запрос к методу `currencies` сервиса `InstrumentsService` и получаем список валют. Затем мы перебираем полученный список и выводим информацию о каждой валюте.

Для дальнейших действий вам может потребоваться добавить обработку ошибок, работу с потоками данных (если используется streaming API), аутентификацию и другие необходимые функции.

Надеюсь, это поможет вам с правильной реализацией запросов к TINKOFF INVEST API через gRPC.
1. Примеры есть, если напишешь issue, то пример новый добавят рано или поздно. 
Для инструментов пример вот:
https://github.com/RussianInvestments/invest-api-c...

2. А что именно тебе нужно?
Вот например:
var settings = new Tinkoff.InvestApi.InvestApiSettings
{
    AccessToken = "..."
};
var client = Tinkoff.InvestApi.InvestApiClientFactory.Create(settings);
var currencies = client.Instruments.Currencies();
foreach (var currency in currencies.Instruments)
{
    Console.WriteLine(
        $"{currency.Uid} {currency.Ticker} {currency.Name} {currency.Nominal.Units + currency.Nominal.Nano / 1000000000m} {currency.Nominal.Currency}");
}
Похожие вопросы