Started working on actors: update and dialog.
This commit is contained in:
2
.idea/modules/root-build.iml
generated
2
.idea/modules/root-build.iml
generated
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="root-build" external.linked.project.path="$MODULE_DIR$/../../project" external.root.project.path="$MODULE_DIR$/../.." external.system.id="SBT" sbt.imports="SUB:DOLLARcba567fe292588d9e13d.`root`, _root_.sbt.Keys._, _root_.sbt._, _root_.sbt.plugins.IvyPlugin, _root_.sbt.plugins.JvmPlugin, _root_.sbt.plugins.CorePlugin, _root_.sbt.plugins.JUnitXmlReportPlugin, _root_.sbt.plugins.Giter8TemplatePlugin, _root_.sbtassembly.AssemblyPlugin, _root_.sbtassembly.AssemblyPlugin.autoImport._, _root_.scala.xml.{TopScope=>SUB:DOLLARscope}" sbt.resolvers="https://repo1.maven.org/maven2/|maven|public, file:/home/nnm/.sbt/preloaded/|maven|local-preloaded, /home/nnm/.ivy2/cache|ivy|Local cache" type="SBT_MODULE" version="4">
|
||||
<module external.linked.project.id="root-build" external.linked.project.path="$MODULE_DIR$/../../project" external.root.project.path="$MODULE_DIR$/../.." external.system.id="SBT" sbt.imports="SUB:DOLLAR76b0f6bd323a78663921.`root`, _root_.sbt.Keys._, _root_.sbt._, _root_.sbt.plugins.IvyPlugin, _root_.sbt.plugins.JvmPlugin, _root_.sbt.plugins.CorePlugin, _root_.sbt.plugins.JUnitXmlReportPlugin, _root_.sbt.plugins.Giter8TemplatePlugin, _root_.sbtassembly.AssemblyPlugin, _root_.sbtassembly.AssemblyPlugin.autoImport._, _root_.scala.xml.{TopScope=>SUB:DOLLARscope}" sbt.resolvers="https://repo1.maven.org/maven2/|maven|public, file:/Users/pavelkachalouski/.sbt/preloaded/|maven|local-preloaded, /Users/pavelkachalouski/.ivy2/cache|ivy|Local cache" type="SBT_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<output url="file://$MODULE_DIR$/../../project/target/idea-classes" />
|
||||
<output-test url="file://$MODULE_DIR$/../../project/target/idea-test-classes" />
|
||||
|
||||
103
.idea/modules/root.iml
generated
103
.idea/modules/root.iml
generated
@@ -15,6 +15,58 @@
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="sbt: com.google.code.gson:gson:2.8.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-actor-typed_2.12:2.5.12:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.typelevel:macro-compat_2.12:1.1.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.typelevel:machinist_2.12:0.6.2:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.typelevel:cats-macros_2.12:1.0.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.typelevel:cats-kernel_2.12:1.0.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.typelevel:cats-core_2.12:1.0.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.spire-math:jawn-parser_2.12:0.11.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.scala-lang:scala-reflect:2.12.6:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.circe:circe-parser_2.12:0.9.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.circe:circe-numbers_2.12:0.9.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.circe:circe-jawn_2.12:0.9.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.circe:circe-generic_2.12:0.9.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.circe:circe-core_2.12:0.9.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.chuusai:shapeless_2.12:2.3.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe:config:1.3.2:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe:ssl-config-core_2.12:0.2.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-actor_2.12:2.5.12:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-http-core_2.12:10.1.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-http_2.12:10.1.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-parsing_2.12:10.1.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-protobuf_2.12:2.5.12:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-stream_2.12:2.5.12:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.netty:netty-reactive-streams:1.0.8:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.vk.api:sdk:0.5.12:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: commons-codec:commons-codec:1.9:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: commons-io:commons-io:2.5:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: commons-logging:commons-logging:1.2:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-buffer:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-codec:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-codec-http:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-common:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-handler:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-transport:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-transport-native-epoll:4.0.48.Final:linux-x86_64:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.apache.commons:commons-collections4:4.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.apache.commons:commons-lang3:3.6:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.apache.httpcomponents:httpclient:4.5.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.apache.httpcomponents:httpcore:4.4.6:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.apache.httpcomponents:httpmime:4.5.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.asynchttpclient:async-http-client:2.0.33:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.asynchttpclient:async-http-client-netty-utils:2.0.33:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.asynchttpclient:netty-codec-dns:2.0.33:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.asynchttpclient:netty-resolver:2.0.33:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.asynchttpclient:netty-resolver-dns:2.0.33:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.reactivestreams:reactive-streams:1.0.2:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.scala-lang:scala-library:2.12.6:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.scala-lang.modules:scala-java8-compat_2.12:0.8.0:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.scala-lang.modules:scala-parser-combinators_2.12:1.1.0:jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="sbt: org.scala-lang.modules:scala-xml_2.12:1.0.6:jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="sbt: org.scalactic:scalactic_2.12:3.0.5:jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="sbt: org.scalatest:scalatest_2.12:3.0.5:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.slf4j:slf4j-api:1.7.25:jar" level="project" />
|
||||
<orderEntry type="module-library">
|
||||
<library name="sbt: unmanaged-sources-and-docs">
|
||||
<CLASSES />
|
||||
@@ -24,56 +76,5 @@
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" name="sbt: org.slf4j:slf4j-api:1.7.25:jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="sbt: org.scalatest:scalatest_2.12:3.0.5:jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="sbt: org.scalactic:scalactic_2.12:3.0.5:jar" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="sbt: org.scala-lang.modules:scala-xml_2.12:1.0.6:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.scala-lang.modules:scala-parser-combinators_2.12:1.1.0:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.scala-lang.modules:scala-java8-compat_2.12:0.8.0:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.scala-lang:scala-library:2.12.6:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.reactivestreams:reactive-streams:1.0.2:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.asynchttpclient:netty-resolver-dns:2.0.33:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.asynchttpclient:netty-resolver:2.0.33:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.asynchttpclient:netty-codec-dns:2.0.33:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.asynchttpclient:async-http-client-netty-utils:2.0.33:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.asynchttpclient:async-http-client:2.0.33:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.apache.httpcomponents:httpmime:4.5.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.apache.httpcomponents:httpcore:4.4.6:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.apache.httpcomponents:httpclient:4.5.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.apache.commons:commons-lang3:3.6:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.apache.commons:commons-collections4:4.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-transport-native-epoll:4.0.48.Final:linux-x86_64:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-transport:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-handler:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-common:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-codec-http:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-codec:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.netty:netty-buffer:4.0.48.Final:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: commons-logging:commons-logging:1.2:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: commons-io:commons-io:2.5:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: commons-codec:commons-codec:1.9:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.vk.api:sdk:0.5.12:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.netty:netty-reactive-streams:1.0.8:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-stream_2.12:2.5.12:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-protobuf_2.12:2.5.12:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-parsing_2.12:10.1.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-http_2.12:10.1.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-http-core_2.12:10.1.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-actor_2.12:2.5.12:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe:ssl-config-core_2.12:0.2.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.typesafe:config:1.3.2:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: com.chuusai:shapeless_2.12:2.3.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.circe:circe-core_2.12:0.9.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.circe:circe-generic_2.12:0.9.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.circe:circe-jawn_2.12:0.9.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.circe:circe-numbers_2.12:0.9.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: io.circe:circe-parser_2.12:0.9.3:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.scala-lang:scala-reflect:2.12.6:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.spire-math:jawn-parser_2.12:0.11.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.typelevel:cats-core_2.12:1.0.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.typelevel:cats-kernel_2.12:1.0.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.typelevel:cats-macros_2.12:1.0.1:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.typelevel:machinist_2.12:0.6.2:jar" level="project" />
|
||||
<orderEntry type="library" name="sbt: org.typelevel:macro-compat_2.12:1.1.1:jar" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -12,6 +12,7 @@ lazy val root = (project in file(".")).
|
||||
libraryDependencies ++= Seq(
|
||||
scalaTest % Test,
|
||||
akka,
|
||||
akkaTyped,
|
||||
akkaHttp,
|
||||
akkaStream,
|
||||
vkapi,
|
||||
|
||||
@@ -3,6 +3,7 @@ import sbt._
|
||||
object Dependencies {
|
||||
lazy val scalaTest = "org.scalatest" %% "scalatest" % "3.0.5"
|
||||
lazy val akka = "com.typesafe.akka" %% "akka-actor" % "2.5.12"
|
||||
lazy val akkaTyped = "com.typesafe.akka" %% "akka-actor-typed" % "2.5.12"
|
||||
lazy val akkaHttp = "com.typesafe.akka" %% "akka-http" % "10.1.1"
|
||||
lazy val akkaStream = "com.typesafe.akka" %% "akka-stream" % "2.5.12"
|
||||
lazy val vkapi = "com.vk.api" % "sdk" % "0.5.12"
|
||||
|
||||
@@ -13,8 +13,8 @@ import akka.http.scaladsl.unmarshalling.Unmarshal
|
||||
import akka.http.scaladsl.{ConnectionContext, Http, HttpExt, HttpsConnectionContext}
|
||||
import akka.stream.ActorMaterializer
|
||||
import akka.util.ByteString
|
||||
import eu.xeppaka.bot1.actors.UpdateActor
|
||||
import eu.xeppaka.bot1.actors.UpdateActor.ReceivedUpdate
|
||||
import eu.xeppaka.bot1.actors.UpdateActor2
|
||||
import eu.xeppaka.bot1.actors.UpdateActor2.ReceivedUpdate
|
||||
import javax.net.ssl.{KeyManagerFactory, SSLContext, TrustManagerFactory}
|
||||
|
||||
import scala.collection.immutable
|
||||
@@ -38,7 +38,7 @@ class TelegramBotServer(botId: String, port: Int, httpsContext: Option[HttpsConn
|
||||
"pkcloud",
|
||||
port,
|
||||
connectionContext = httpsContext.getOrElse(http.defaultClientHttpsContext))
|
||||
private val updateActor = actorSystem.actorOf(UpdateActor.props(botUri, http))
|
||||
private val updateActor = actorSystem.actorOf(UpdateActor2.props(botUri, http))
|
||||
|
||||
println(s"webhook path: $webhookUri")
|
||||
|
||||
|
||||
@@ -1,42 +1,7 @@
|
||||
package eu.xeppaka.bot1.actors
|
||||
|
||||
import akka.actor.{Actor, ActorLogging, Props}
|
||||
import akka.http.scaladsl.HttpExt
|
||||
import akka.http.scaladsl.model.{ContentTypes, HttpEntity, HttpMethods, HttpRequest}
|
||||
import akka.util.ByteString
|
||||
import eu.xeppaka.bot1.TelegramEntities.SendMessage
|
||||
import eu.xeppaka.bot1.{BotUri, TelegramEntities}
|
||||
|
||||
class UpdateActor(botUri: BotUri, http: HttpExt) extends Actor with ActorLogging {
|
||||
import UpdateActor.ReceivedUpdate
|
||||
|
||||
override def receive: Receive = {
|
||||
case ReceivedUpdate(update) => processUpdate(update)
|
||||
}
|
||||
|
||||
private def processUpdate(update: TelegramEntities.Update) = {
|
||||
log.info(s"Received update: $update")
|
||||
if (update.message.isDefined) {
|
||||
processMessage(update.message.get)
|
||||
}
|
||||
}
|
||||
|
||||
private def processMessage(message: TelegramEntities.Message) = {
|
||||
import io.circe._, io.circe.generic.auto._, io.circe.syntax._
|
||||
|
||||
log.info("Received message from: {}", message.from)
|
||||
val sendMessage = SendMessage(message.chat.id, s"Привет, ${message.from.get.first_name}")
|
||||
val printer = Printer.noSpaces.copy(dropNullValues = true)
|
||||
val json = printer.pretty(sendMessage.asJson)
|
||||
val request = HttpRequest(HttpMethods.POST, uri = botUri.sendMessage, entity = HttpEntity.Strict(ContentTypes.`application/json`, ByteString(json)))
|
||||
http.singleRequest(request)
|
||||
}
|
||||
}
|
||||
import eu.xeppaka.bot1.TelegramEntities
|
||||
|
||||
object UpdateActor {
|
||||
|
||||
case class ReceivedUpdate(update: TelegramEntities.Update)
|
||||
|
||||
def props(botUri: BotUri, http: HttpExt): Props = Props(new UpdateActor(botUri, http))
|
||||
|
||||
final case class ProcessUpdate(update: TelegramEntities.Update)
|
||||
}
|
||||
|
||||
42
src/main/scala/eu/xeppaka/bot1/actors/UpdateActor2.scala
Normal file
42
src/main/scala/eu/xeppaka/bot1/actors/UpdateActor2.scala
Normal file
@@ -0,0 +1,42 @@
|
||||
package eu.xeppaka.bot1.actors
|
||||
|
||||
import akka.actor.{Actor, ActorLogging, Props}
|
||||
import akka.http.scaladsl.HttpExt
|
||||
import akka.http.scaladsl.model.{ContentTypes, HttpEntity, HttpMethods, HttpRequest}
|
||||
import akka.util.ByteString
|
||||
import eu.xeppaka.bot1.TelegramEntities.SendMessage
|
||||
import eu.xeppaka.bot1.{BotUri, TelegramEntities}
|
||||
|
||||
class UpdateActor2 extends Actor with ActorLogging {
|
||||
import UpdateActor2.ReceivedUpdate
|
||||
|
||||
override def receive: Receive = {
|
||||
case ReceivedUpdate(update) => processUpdate(update)
|
||||
}
|
||||
|
||||
private def processUpdate(update: TelegramEntities.Update) = {
|
||||
log.info(s"Received update: $update")
|
||||
if (update.message.isDefined) {
|
||||
processMessage(update.message.get)
|
||||
}
|
||||
}
|
||||
|
||||
private def processMessage(message: TelegramEntities.Message) = {
|
||||
import io.circe._, io.circe.generic.auto._, io.circe.syntax._
|
||||
|
||||
// log.info("Received message from: {}", message.from)
|
||||
// val sendMessage = SendMessage(message.chat.id, s"Привет, ${message.from.get.first_name}")
|
||||
// val printer = Printer.noSpaces.copy(dropNullValues = true)
|
||||
// val json = printer.pretty(sendMessage.asJson)
|
||||
// val request = HttpRequest(HttpMethods.POST, uri = botUri.sendMessage, entity = HttpEntity.Strict(ContentTypes.`application/json`, ByteString(json)))
|
||||
// http.singleRequest(request)
|
||||
}
|
||||
}
|
||||
|
||||
object UpdateActor2 {
|
||||
|
||||
case class ReceivedUpdate(update: TelegramEntities.Update)
|
||||
|
||||
def props(): Props = Props(new UpdateActor2())
|
||||
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package example
|
||||
|
||||
object Hello extends Greeting with App {
|
||||
println(greeting)
|
||||
}
|
||||
|
||||
trait Greeting {
|
||||
lazy val greeting: String = "hello"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package example
|
||||
|
||||
import org.scalatest._
|
||||
|
||||
class HelloSpec extends FlatSpec with Matchers {
|
||||
"The Hello object" should "say hello" in {
|
||||
Hello.greeting shouldEqual "hello"
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package example
|
||||
|
||||
import akka.http.scaladsl.unmarshalling.Unmarshal
|
||||
import akka.stream.Materializer
|
||||
import akka.util.ByteString
|
||||
import eu.xeppaka.bot1.TelegramEntities
|
||||
import eu.xeppaka.bot1.TelegramEntities.{Chat, Message, User}
|
||||
import org.scalatest.FlatSpec
|
||||
|
||||
import scala.concurrent.Await
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
import scala.concurrent.duration._
|
||||
|
||||
case class Text(t: Option[String], t1: Option[String])
|
||||
|
||||
class MarshalSpec extends FlatSpec {
|
||||
|
||||
"Circle marshal/unmarshal" should "work" in {
|
||||
import io.circe._, io.circe.generic.auto._, io.circe.parser._, io.circe.syntax._
|
||||
case class Large2(p1: Int, p2: Int, p3: Int, p4: Int, p5: Int, p6: Int, p7: Int, p8: Int, p9: Int, p10: Int, p11: Int, p12: Int, p13: Int, p14: Int, p15: Int, p16: Int, p17: Int, p18: Int, p19: Int, p20: Int, p21: Int, p22: Int, p23: Int)
|
||||
|
||||
val f = Large2(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
|
||||
|
||||
val json = f.asJson.noSpaces
|
||||
println(json)
|
||||
}
|
||||
|
||||
"Telegram message marshal/unmarshal" should "work" in {
|
||||
import io.circe._, io.circe.generic.auto._, io.circe.syntax._
|
||||
|
||||
implicit val printer: Printer = Printer.noSpaces.copy(dropNullValues = true)
|
||||
val c = Chat(555666, "userChat")
|
||||
val m = Message(message_id = 111222, from = None, date = 111333, chat = c)
|
||||
val json = printer.pretty(m.asJson)
|
||||
println(json)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user