Здравствуйте.
Хотел помучать Тинькофф API gRPC, но пока только мучаюсь сам. Прошу вашей помощи.
Создал класс взаимодействия:
using Grpc.Core;
using Grpc.Net.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tinkoff.InvestApi.V1
{
internal class Instruments
{
public void Bonds()
{
var metadata = new Metadata
{
{ "Authorization", "Bearer TOKEN"}
};
using var channel = GrpcChannel.ForAddress("invest-public-api.tinkoff.ru:443");
}
}
}
Добавил proto files в проект
Изменил конфигурацию
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<Protobuf Include="Protos\contracts\*.proto" GrpcServices="Client"/>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.26.1" />
<PackageReference Include="Grpc.Net.Client" Version="2.62.0" />
<PackageReference Include="Grpc.Tools" Version="2.62.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
Начинаю собирать, получаю кучу ошибок.
В proto file, пространство имен не менял, директории создал как в proto file.
syntax = "proto3";
package tinkoff.public.invest.api.contract.v1;
option go_package = "./;investapi";
option java_package = "ru.tinkoff.piapi.contract.v1";
option java_multiple_files = true;
option csharp_namespace = "Tinkoff.InvestApi.V1";
option objc_class_prefix = "TIAPI";
option php_namespace = "Tinkoff\\Invest\\V1";
import "google/protobuf/timestamp.proto";
//Тип инструмента.
enum InstrumentType {
INSTRUMENT_TYPE_UNSPECIFIED = 0;
INSTRUMENT_TYPE_BOND = 1; //Облигация.
INSTRUMENT_TYPE_SHARE = 2; //Акция.
INSTRUMENT_TYPE_CURRENCY = 3; //Валюта.
INSTRUMENT_TYPE_ETF = 4; //Exchange-traded fund. Фонд.
INSTRUMENT_TYPE_FUTURES = 5; //Фьючерс.
INSTRUMENT_TYPE_SP = 6; //Структурная нота.
INSTRUMENT_TYPE_OPTION = 7; //Опцион.
INSTRUMENT_TYPE_CLEARING_CERTIFICATE = 8; //Clearing certificate.
INSTRUMENT_TYPE_INDEX = 9; //Индекс.
INSTRUMENT_TYPE_COMMODITY = 10; //Товар.
}
//Денежная сумма в определенной валюте
message MoneyValue {
// строковый ISO-код валюты
string currency = 1;
// целая часть суммы, может быть отрицательным числом
int64 units = 2;
// дробная часть суммы, может быть отрицательным числом
int32 nano = 3;
}
//Котировка — денежная сумма без указания валюты
message Quotation {
// целая часть суммы, может быть отрицательным числом
int64 units = 1;
// дробная часть суммы, может быть отрицательным числом
int32 nano = 2;
}
//Режим торгов инструмента
enum SecurityTradingStatus {
SECURITY_TRADING_STATUS_UNSPECIFIED = 0; //Торговый статус не определён
SECURITY_TRADING_STATUS_NOT_AVAILABLE_FOR_TRADING = 1; //Недоступен для торгов
SECURITY_TRADING_STATUS_OPENING_PERIOD = 2; //Период открытия торгов
SECURITY_TRADING_STATUS_CLOSING_PERIOD = 3; //Период закрытия торгов
SECURITY_TRADING_STATUS_BREAK_IN_TRADING = 4; //Перерыв в торговле
SECURITY_TRADING_STATUS_NORMAL_TRADING = 5; //Нормальная торговля
SECURITY_TRADING_STATUS_CLOSING_AUCTION = 6; //Аукцион закрытия
SECURITY_TRADING_STATUS_DARK_POOL_AUCTION = 7; //Аукцион крупных пакетов
SECURITY_TRADING_STATUS_DISCRETE_AUCTION = 8; //Дискретный аукцион
SECURITY_TRADING_STATUS_OPENING_AUCTION_PERIOD = 9; //Аукцион открытия
SECURITY_TRADING_STATUS_TRADING_AT_CLOSING_AUCTION_PRICE = 10; //Период торгов по цене аукциона закрытия
SECURITY_TRADING_STATUS_SESSION_ASSIGNED = 11; //Сессия назначена
SECURITY_TRADING_STATUS_SESSION_CLOSE = 12; //Сессия закрыта
SECURITY_TRADING_STATUS_SESSION_OPEN = 13; //Сессия открыта
SECURITY_TRADING_STATUS_DEALER_NORMAL_TRADING = 14; //Доступна торговля в режиме внутренней ликвидности брокера
SECURITY_TRADING_STATUS_DEALER_BREAK_IN_TRADING = 15; //Перерыв торговли в режиме внутренней ликвидности брокера
SECURITY_TRADING_STATUS_DEALER_NOT_AVAILABLE_FOR_TRADING = 16; //Недоступна торговля в режиме внутренней ликвидности брокера
}
//Проверка активности стрима.
message Ping {
google.protobuf.Timestamp time = 1; //Время проверки.
string stream_id = 2; //Идентификатор соединения
}
//Тип цены.
enum PriceType {
PRICE_TYPE_UNSPECIFIED = 0; //Значение не определено.
PRICE_TYPE_POINT = 1; //Цена в пунктах (только для фьючерсов и облигаций).
PRICE_TYPE_CURRENCY = 2; //Цена в валюте расчётов по инструменту.
}
message Page {
int32 limit = 1; //Максимальное число возвращаемых записей.
int32 page_number = 2; //Порядковый номер страницы, начиная с 0.
}
message PageResponse {
int32 limit = 1; //Максимальное число возвращаемых записей.
int32 page_number = 2; //Порядковый номер страницы, начиная с 0.
int32 total_count = 3; //Общее количество записей.
}
message ResponseMetadata {
string tracking_id = 42; //Идентификатор трекинга
google.protobuf.Timestamp server_time = 43; //Серверное время
}
message BrandData {
string logo_name = 1; // Логотип инструмента. Имя файла для получения логотипа.
string logo_base_color = 2; // Цвет бренда.
string text_color = 3; // Цвет текста для цвета логотипа бренда.
}
Все требуемые зависимости установил:
Прошу, подскажите пожалуйста в чем может быть проблема?
Спасибо.