Invest:ScalaTINKOFFINVESTAPIscalapb.zio_grpc

我尝试将 Scala 与插件“com.thesamet.scalapb.zio-grpc”%%“zio-grpc-codegen”%“0.6.0-test1”一起用于调用 gRPC 服务 TINKOFF INVEST API。一切都很好,我 hava 从 *.proto 文件生成了 ZIO 代码。接下来我想要调用货币方法和输出货币列表

我尝试将 Scala 与插件“com.thesamet.scalapb.zio-grpc”%%“zio-grpc-codegen”%“0.6.0-test1”一起用于调用 gRPC 服务 TINKOFF INVEST API。一切都很好,我 hava 从 *.proto 文件生成了 ZIO 代码。接下来我想要调用货币方法和输出货币列表

package app
import io.grpc.{CallOptions, ManagedChannelBuilder}
import ru.tinkoff.piapi.contract.v1.instruments.InstrumentStatus.INSTRUMENT_STATUS_BASE
import zio.Console._
import ru.tinkoff.piapi.contract.v1.instruments.{InstrumentsRequest}
import ru.tinkoff.piapi.contract.v1.instruments.ZioInstruments.InstrumentsService
import scalapb.zio_grpc.ZManagedChannel
import zio._
import java.util.concurrent.TimeUnit
import scala.language.existentials
object main extends zio.ZIOAppDefault {
  final def run :URIO[Console,ExitCode] =
    myAppLogic.exitCode
  val token: String = "xx"
  val manChannelBuilder = ManagedChannelBuilder.forAddress("invest-public-api.tinkoff.ru", 443)
  manChannelBuilder.useTransportSecurity()
  manChannelBuilder.keepAliveTime(10L, TimeUnit.SECONDS)
  val channel = ZManagedChannel(manChannelBuilder)
  val optSrc: CallOptions = CallOptions.DEFAULT
    .withAuthority("Bearer "+token)
  val opt: zio.IO[io.grpc.Status, io.grpc.CallOptions] = IO.succeed(optSrc)
  val instrManaged: Managed[Throwable, InstrumentsService] =
    InstrumentsService.managed(managedChannel = channel,options = opt)
  val myAppLogic = for {
    _ <- printLine("Begin myAppLogic")
    res <- instrManaged.use(
      client =>
        client.withTimeoutMillis(3000).currencies {
          InstrumentsRequest(
            instrumentStatus = INSTRUMENT_STATUS_BASE
          )
        }.mapError(_.asRuntimeException())
    )
    _ <- printLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
    _ = res.instruments.foreach(instr => printLine(instr.name))
    _ <- printLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
    _ <- printLine("End myAppLogic")
  } yield res
}

和输出,当我运行它(没有错误或警告):

14:59:28.098 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND SETTINGS: ack=false settings={ENABLE_PUSH=0, MAX_CONCURRENT_STREAMS=0, INITIAL_WINDOW_SIZE=1048576, MAX_HEADER_LIST_SIZE=8192}
14:59:28.100 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND WINDOW_UPDATE: streamId=0 windowSizeIncrement=983041
14:59:28.263 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND SETTINGS: ack=false settings={MAX_CONCURRENT_STREAMS=100, MAX_FRAME_SIZE=65536}
14:59:28.264 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND SETTINGS: ack=true
14:59:28.276 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND SETTINGS: ack=true
14:59:28.282 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND HEADERS: streamId=3 headers=GrpcHttp2OutboundHeaders[:authority: Bearer xx, :path: /tinkoff.public.invest.api.contract.v1.InstrumentsService/Currencies, :method: POST, :scheme: https, content-type: application/grpc, te: trailers, user-agent: grpc-java-netty/1.46.0, grpc-accept-encoding: gzip, grpc-timeout: 1918903u] streamDependency=0 weight=16 exclusive=false padding=0 endStream=false
14:59:28.286 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND DATA: streamId=3 padding=0 endStream=true length=7 bytes=00000000020801
14:59:28.449 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND WINDOW_UPDATE: streamId=3 windowSizeIncrement=7
14:59:28.449 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND WINDOW_UPDATE: streamId=0 windowSizeIncrement=2147418119
14:59:28.452 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND HEADERS: streamId=3 headers=GrpcHttp2ResponseHeaders[:status: 400, content-length: 90, cache-control: no-cache, content-type: text/html] padding=0 endStream=false
14:59:28.465 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND DATA: streamId=3 padding=0 endStream=false length=90 bytes=3c68746d6c3e3c626f64793e3c68313e3430302042616420726571756573743c2f68313e0a596f75722062726f777365722073656e7420616e20696e76616c69...
14:59:28.465 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND PING: ack=false bytes=1234
14:59:28.467 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] INBOUND DATA: streamId=3 padding=0 endStream=true length=0 bytes=
14:59:28.471 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND RST_STREAM: streamId=3 errorCode=8
14:59:28.513 [grpc-nio-worker-ELG-1-4] DEBUG io.grpc.netty.NettyHandler - [id: 0xc3b39ab6, L:/192.168.1.2:58243 - R:invest-public-api.tinkoff.ru/91.194.227.80:443] OUTBOUND GO_AWAY: lastStreamId=0 errorCode=0 length=0 bytes=

你能给我点建议吗?

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(151)
社保代码是社保卡上的哪一个:哪一个是更快的对象检测 (fast object detection)
上一篇
Cy是什么软件:有什么办法让我从dataCy到data-cy改变这个
下一篇

相关推荐

  • scala编程第三版pdf从基础到实践

    Scala编程第三版是一本由Martin Odersky编写的Scala编程语言的官方参考书。它涵盖了Scala语言的基础知识,以及如何使用它来开发高质量的应用程序。它还提供了一些实用的代码示例,可以帮助读者更好地理解Scala语言的特性。…

    2023-11-01 15:45:48
    0 11 19
  • java调用scala方法实现更高效的开发

    示例示例Java调用Scala方法的步骤如下:在Scala中定义一个要被Java调用的方法,如下:…

    2023-02-25 08:15:17
    0 27 26
  • scala面向对象编程:如何使用Scala面向对象编程实现更高效的解决方案

    示例示例Scala面向对象编程是一种把数据和行为封装在一起的编程方式,它是一种面向对象的编程语言,可以帮助用户创建具有复杂行为的对象。Scala面向对象编程的基本特征包括:…

    2023-01-17 05:56:06
    0 42 98
  • scala代码概念与实践

    Scala代码是一种面向对象的编程语言,它使用函数式编程风格,具有简洁、高效和可扩展性。Scala代码可以在Java虚拟机(JVM)上运行,并且可以与Java代码交互。…

    2023-03-05 07:24:38
    0 94 27
  • Python中继承:如何在 scala中继承类(scala inheritance)

    关于Python中继承的问题,在scala inheritance中经常遇到,我试图在 Scala 中继承一个类。我的父类是…

    2022-11-25 05:52:45
    0 21 13
  • cvt和自动挡哪个好提升驾驶体验的最佳选择

    CVT(可变转换器)是一种由传动带及传动轮组成的无级变速器,它可以在没有传动档位的情况下,根据驾驶者的驾驶习惯,自动调整传动轮之间的转速比,从而实现无级变速。自动挡是指车辆自动变速箱,它使用液力传动来实现变速,可以自动适应车辆的行驶状态,减少司机的疲劳,提高行车的舒适性。…

    2023-06-08 07:42:19
    0 41 95
  • cv一叶扁舟和清影轩阳:漫游在一叶扁舟和清影轩阳之间

    cv一叶扁舟是一款开源的计算机视觉库,用于图像处理、计算机视觉等。它提供了丰富的API,可以帮助开发者快速实现各种图像处理任务,如图像分割、目标检测、图像识别等。清影轩阳是一款开源的计算机视觉框架,用于图像处理、目标检测、分类等。它提供了丰富的API,可以帮助开发者快速实现各种图像处理任务,如图像分割、目标检测、图像识别等。…

    2023-08-05 07:06:20
    0 51 36
  • css设置滚动条宽度设置:This is a title

    CSS设置滚动条宽度的方法:使用CSS3的。-webkit-属性:…

    2023-06-06 10:53:01
    0 88 80

发表评论

登录 后才能评论

评论列表(7条)