Added isProduction config, starting with docker plugin

This commit is contained in:
Pavel Kachalouski
2019-05-17 22:10:43 +02:00
parent 08ea1fe449
commit 9d30525c8a
17 changed files with 195 additions and 108 deletions

93
.gitignore vendored
View File

@@ -19,19 +19,8 @@ project/plugins/project/
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff # Idea stuff
.idea/**/workspace.xml .idea/
.idea/**/tasks.xml
.idea/**/dictionaries
.idea/**/shelf
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
# Gradle # Gradle
.idea/**/gradle.xml .idea/**/gradle.xml
@@ -67,3 +56,81 @@ fabric.properties
# Editor-based Rest Client # Editor-based Rest Client
.idea/httpRequests .idea/httpRequests
### SBT template
# Simple Build Tool
# http://www.scala-sbt.org/release/docs/Getting-Started/Directories.html#configuring-version-control
dist/*
target/
lib_managed/
src_managed/
project/boot/
project/plugins/project/
.history
.cache
.lib/
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
### Scala template
*.class
*.log

View File

@@ -1,5 +0,0 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Leveris-scala" />
</state>
</component>

4
.idea/encodings.xml generated
View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
</project>

9
.idea/hydra.xml generated
View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="HydraSettings">
<option name="hydraStorePath" value="$PROJECT_DIR$/.hydra/idea" />
<option name="noOfCores" value="2" />
<option name="projectRoot" value="$PROJECT_DIR$" />
<option name="sourcePartitioner" value="auto" />
</component>
</project>

View File

@@ -1,53 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="telegram-bot [file:/home/nnm/development/telegram-bot1/]" external.linked.project.path="$MODULE_DIR$/../../telegram-bot" external.root.project.path="$MODULE_DIR$/../.." external.system.id="SBT" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/../../telegram-bot/target/scala-2.12/classes" />
<output-test url="file://$MODULE_DIR$/../../telegram-bot/target/scala-2.12/test-classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../../telegram-bot">
<sourceFolder url="file://$MODULE_DIR$/../../telegram-bot/src/main/scala" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../telegram-bot/src/test/scala" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../telegram-bot/target/scala-2.12/src_managed/main" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../telegram-bot/target/scala-2.12/src_managed/test" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../telegram-bot/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/../../telegram-bot/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="sbt: com.chuusai:shapeless_2.12:2.3.3:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-testkit_2.12:2.5.19:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-stream_2.12:2.5.19:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-protobuf_2.12:2.5.19:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-persistence_2.12:2.5.19:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-persistence-typed_2.12:2.5.19:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-actor_2.12:2.5.19:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-actor-typed_2.12:2.5.19:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-actor-testkit-typed_2.12:2.5.19:jar" level="project" />
<orderEntry type="library" name="sbt: org.fusesource.leveldbjni:leveldbjni-all:1.8:jar" level="project" />
<orderEntry type="library" name="sbt: de.heikoseeberger:akka-http-circe_2.12:1.22.0:jar" level="project" />
<orderEntry type="library" name="sbt: org.typelevel:machinist_2.12:0.6.5:jar" level="project" />
<orderEntry type="library" name="sbt: org.typelevel:cats-macros_2.12:1.4.0:jar" level="project" />
<orderEntry type="library" name="sbt: org.typelevel:cats-kernel_2.12:1.4.0:jar" level="project" />
<orderEntry type="library" name="sbt: org.typelevel:cats-core_2.12:1.4.0:jar" level="project" />
<orderEntry type="library" name="sbt: org.spire-math:jawn-parser_2.12:0.13.0:jar" level="project" />
<orderEntry type="library" name="sbt: org.scala-lang.modules:scala-parser-combinators_2.12:1.1.1:jar" level="project" />
<orderEntry type="library" name="sbt: io.circe:circe-parser_2.12:0.10.0:jar" level="project" />
<orderEntry type="library" name="sbt: io.circe:circe-numbers_2.12:0.10.0:jar" level="project" />
<orderEntry type="library" name="sbt: io.circe:circe-jawn_2.12:0.10.0:jar" level="project" />
<orderEntry type="library" name="sbt: io.circe:circe-generic_2.12:0.10.0:jar" level="project" />
<orderEntry type="library" name="sbt: io.circe:circe-core_2.12:0.10.0:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-parsing_2.12:10.1.5:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-http_2.12:10.1.5:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe.akka:akka-http-core_2.12:10.1.5:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe:config:1.3.3: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.modules:scala-java8-compat_2.12:0.8.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.typelevel:macro-compat_2.12:1.1.1:jar" level="project" />
<orderEntry type="library" name="sbt: com.typesafe:ssl-config-core_2.12:0.3.6:jar" level="project" />
<orderEntry type="library" name="sbt: org.scala-lang:scala-library:2.12.8:jar" level="project" />
<orderEntry type="library" name="sbt: org.scala-lang:scala-reflect:2.12.8:jar" level="project" />
</component>
</module>

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="telegram-bot1 [file:/home/nnm/development/telegram-bot1/]" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="SBT" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/../../target/scala-2.12/classes" />
<output-test url="file://$MODULE_DIR$/../../target/scala-2.12/test-classes" />
<exclude-output />
<content url="file://$MODULE_DIR$/../..">
<sourceFolder url="file://$MODULE_DIR$/../../target/scala-2.12/src_managed/main" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../target/scala-2.12/src_managed/test" isTestSource="true" generated="true" />
<excludeFolder url="file://$MODULE_DIR$/../../target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="sbt: org.scala-lang:scala-library:2.12.8:jar" level="project" />
</component>
</module>

View File

@@ -25,3 +25,4 @@ lazy val `telegram-bot` = (project in file("telegram-bot"))
circeAkkaHttp circeAkkaHttp
) )
) )
.enablePlugins(DockerPlugin)

28
keys/telegram-bot.key Normal file
View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDWwewslKtWJ7ye
YrxDuoh5PS7y5/C/0NT6tsAAsh3ZVCqdeNvYj56n8jVob/jJ9EYMqKj7dXLAMopD
htuwdDN/KhW9QVkKzATE1wNxuV3aBVUTJuHHadUYQa7pVevvssAIa1XQ6NvU0pkw
dDApylOj1TkA9MFlZWHWlF0dgrVyGjFxDoWdjm2aLCdRpZCr0giTOfZ5E+OJNALT
HcuJO+PRKdEreO1YVAlT2Sk26f8/iG63C2/t7xWTyJKOjFPxwq3+dkNfJ1AXZ4I7
aFDgP7BKogvooYuCBItqog+IRUOoK9Yj24KCUxD+gaI5+tv0j1ov5d0ZAqqaiSql
96s2/jyZAgMBAAECggEAb5P9owPzKSYoJ5pg+kd2FJenRuke+moD3ecJRtNEEuBZ
68sZXiDwa426FfLnLfZOVtFiSpOw9Q7NK1xr0/frsYwqE1RacPOjHqofzfxjOJ1A
oFy5PaRM5PdraywLE1Sp1TX/NjVl0eNBWB1l0LCgWCS2IzsHKClOdfBLmMOKhicF
4iut9L08ATLPnN+QbqZITCjuW2VCXp7W1X2llnjFNz+wNpifuujSXwdXkLQ/0M8O
Ndtdm/kec1d2VrRFmuvDoh7jaW2q+IQoIJRC4Vms9q6zKoMyuT3dPyluiWq3/mB0
38tsnh/bk50CIAp7IIKRS89v1+3xxbNRnOV0V2PoaQKBgQD0XY1vHMZhmR30V83t
OYNXe6fcLXZRUmz0XqLUnZ6aJTCxYqke65iytisHvcivCH5LovKxaVWw5qhwBLIB
QpCywgtfn+BUiDZc1feMbWcogLuxjNi+1wKpSr/I8IQZBdFAxDP5aHXWneio/xTH
VDugiWlp4pQ0Eg9XyeJ9b6vu3wKBgQDg+35ww+lRSj9/lyHszxvM6BsJxH+eqk+A
8Sk/N0qeSH+d1cRgQRdSxIWtcxY2W+NVq5CLsugjKGmENzi0woWr6xCkj39eCIt3
fbyljRSo7UiiUKtkt0XcUAqXaKKWF+R18e3nfWdT0swGcIAEg7bopvoRv9qE4Xwo
1oayWdZbhwKBgC5KlqNo4Q/WEL2b8I+y6HWnICpulk5bffZhAxmh7kynJO1FkmIg
IWIhbk9eHWlDA6HScYU4Phpv55Ko4QuqD309kyf/QmDhGONHSUjZ5MPgdy3wT5L/
aiql1WT8YxnWZ0iMoofpyQDqEwwInmgQRedogIalfIvMrAlmXjiC8iAjAoGABBFo
Et/n+xlNlqAD9AU2qnjT7FRKPnMz5s/1f/ge+Ee1TwRLfbYPluaIyD8Zergknyrv
/Sap/eDAL6zT8KjHw/kHHwKdOfULmIiEfbXUVs2bj5vHzZVmxPoJhv1UW0RpVByg
wZvJ34EjQUaNegdrqj9CrEl8yQROu2pNmzH2p0cCgYBdJfGrPQ2MS4QEVOYKTULE
8fxfC6NmJG9f9HeKLPnlIMu8svhwCiEHWP+7vZG0gszh3m9IWVOh5YNwFu7Fp9m6
3Ht1aEGrZM0ypD5jHLIaSOxOJRMVvT+O1yH8GBsNLxXstsfkIFSE4vMXbzeUo2Rm
5pAqJlj0tVH19/TlcuWbFQ==
-----END PRIVATE KEY-----

BIN
keys/telegram-bot.p12 Normal file

Binary file not shown.

21
keys/telegram-bot.pem Normal file
View File

@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDcTCCAlmgAwIBAgIJAKLMfxW4KRHuMA0GCSqGSIb3DQEBCwUAME8xCzAJBgNV
BAYTAkNaMQ8wDQYDVQQHDAZQcmFndWUxGjAYBgNVBAoMEVBhdmVsIEthY2hhbG91
c2tpMRMwEQYDVQQDDAp4ZXBwYWthLmV1MB4XDTE4MDUxMTE4MjEzOVoXDTI4MDUw
ODE4MjEzOVowTzELMAkGA1UEBhMCQ1oxDzANBgNVBAcMBlByYWd1ZTEaMBgGA1UE
CgwRUGF2ZWwgS2FjaGFsb3Vza2kxEzARBgNVBAMMCnhlcHBha2EuZXUwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWwewslKtWJ7yeYrxDuoh5PS7y5/C/
0NT6tsAAsh3ZVCqdeNvYj56n8jVob/jJ9EYMqKj7dXLAMopDhtuwdDN/KhW9QVkK
zATE1wNxuV3aBVUTJuHHadUYQa7pVevvssAIa1XQ6NvU0pkwdDApylOj1TkA9MFl
ZWHWlF0dgrVyGjFxDoWdjm2aLCdRpZCr0giTOfZ5E+OJNALTHcuJO+PRKdEreO1Y
VAlT2Sk26f8/iG63C2/t7xWTyJKOjFPxwq3+dkNfJ1AXZ4I7aFDgP7BKogvooYuC
BItqog+IRUOoK9Yj24KCUxD+gaI5+tv0j1ov5d0ZAqqaiSql96s2/jyZAgMBAAGj
UDBOMB0GA1UdDgQWBBRkOXFj0c0jNdM1nJMRGr0EvfeMuTAfBgNVHSMEGDAWgBRk
OXFj0c0jNdM1nJMRGr0EvfeMuTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA
A4IBAQBtXUOfnKdp1GY5gATTrPdr2s7FyiJvVfx/yeNNNR8ZnZcLjBMulEvXsfNi
AL1cEctnSDyT5z2el75nTdAgTFcBZQLsVk9/4ZwBRnfunFqfU5e5X9X9z//yt4Gy
Zq9BrMddQE+qwnOclcTDCc0GnyqKbaPiyYFcaXKhdrsflvoJI9tyLwPgjfXADLDF
JtjC0gGdbgefDweBUMTF0cpZED9q/J2fKXHurub+3QySvUOvphVFP4dBz2WhdoTe
v3lkEVp3I/IUv9qegO0B0o6X+Nnml4/b7HV1PArNceWOA6f57fSL2m6eN6xs4ULJ
kfUMloAr25yvmN/tPwm+8Op5ovot
-----END CERTIFICATE-----

View File

@@ -1 +1,2 @@
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.21")

View File

@@ -0,0 +1,18 @@
akka {
loglevel = "DEBUG"
extensions = [akka.persistence.Persistence]
persistence {
journal {
plugin = "akka.persistence.journal.leveldb"
auto-start-journals = ["akka.persistence.journal.leveldb"]
leveldb.dir = "journal-check-delivery"
}
snapshot-store {
plugin = "akka.persistence.snapshot-store.local"
auto-start-snapshot-stores = ["akka.persistence.snapshot-store.local"]
}
}
}

View File

@@ -0,0 +1,11 @@
<configuration debug="true" scan="true" >
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date [%level] %logger: %message%n%xException</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
</root>
</configuration>

Binary file not shown.

View File

@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDcTCCAlmgAwIBAgIJAKLMfxW4KRHuMA0GCSqGSIb3DQEBCwUAME8xCzAJBgNV
BAYTAkNaMQ8wDQYDVQQHDAZQcmFndWUxGjAYBgNVBAoMEVBhdmVsIEthY2hhbG91
c2tpMRMwEQYDVQQDDAp4ZXBwYWthLmV1MB4XDTE4MDUxMTE4MjEzOVoXDTI4MDUw
ODE4MjEzOVowTzELMAkGA1UEBhMCQ1oxDzANBgNVBAcMBlByYWd1ZTEaMBgGA1UE
CgwRUGF2ZWwgS2FjaGFsb3Vza2kxEzARBgNVBAMMCnhlcHBha2EuZXUwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWwewslKtWJ7yeYrxDuoh5PS7y5/C/
0NT6tsAAsh3ZVCqdeNvYj56n8jVob/jJ9EYMqKj7dXLAMopDhtuwdDN/KhW9QVkK
zATE1wNxuV3aBVUTJuHHadUYQa7pVevvssAIa1XQ6NvU0pkwdDApylOj1TkA9MFl
ZWHWlF0dgrVyGjFxDoWdjm2aLCdRpZCr0giTOfZ5E+OJNALTHcuJO+PRKdEreO1Y
VAlT2Sk26f8/iG63C2/t7xWTyJKOjFPxwq3+dkNfJ1AXZ4I7aFDgP7BKogvooYuC
BItqog+IRUOoK9Yj24KCUxD+gaI5+tv0j1ov5d0ZAqqaiSql96s2/jyZAgMBAAGj
UDBOMB0GA1UdDgQWBBRkOXFj0c0jNdM1nJMRGr0EvfeMuTAfBgNVHSMEGDAWgBRk
OXFj0c0jNdM1nJMRGr0EvfeMuTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA
A4IBAQBtXUOfnKdp1GY5gATTrPdr2s7FyiJvVfx/yeNNNR8ZnZcLjBMulEvXsfNi
AL1cEctnSDyT5z2el75nTdAgTFcBZQLsVk9/4ZwBRnfunFqfU5e5X9X9z//yt4Gy
Zq9BrMddQE+qwnOclcTDCc0GnyqKbaPiyYFcaXKhdrsflvoJI9tyLwPgjfXADLDF
JtjC0gGdbgefDweBUMTF0cpZED9q/J2fKXHurub+3QySvUOvphVFP4dBz2WhdoTe
v3lkEVp3I/IUv9qegO0B0o6X+Nnml4/b7HV1PArNceWOA6f57fSL2m6eN6xs4ULJ
kfUMloAr25yvmN/tPwm+8Op5ovot
-----END CERTIFICATE-----

View File

@@ -15,9 +15,15 @@ import scala.io.StdIn
object Main { object Main {
def main(args: Array[String]): Unit = { def main(args: Array[String]): Unit = {
//val botId = "570855144:AAEv7b817cuq2JJI9f2kG5B9G3zW1x-btz4" // useless bot val isProduction = System.getProperty("isProduction", "false").toBoolean
val botId = "693134480:AAE8JRXA6j1mkOKTaxapP6A-E4LPHRuiIf8" // delivery bot
val botBehavior = Behaviors.supervise(TelegramBot.behavior(botId, "0.0.0.0", 88)).onFailure(SupervisorStrategy.restart) val (botId, localPort, hookPort) = if (isProduction) {
("693134480:AAE8JRXA6j1mkOKTaxapP6A-E4LPHRuiIf8", 88, 88) // delivery bot
} else {
("570855144:AAEv7b817cuq2JJI9f2kG5B9G3zW1x-btz4", 8443, 8443) // useless bot
}
val botBehavior = Behaviors.supervise(TelegramBot.behavior(botId, "0.0.0.0", localPort, hookPort)).onFailure(SupervisorStrategy.restart)
val telegramBot = ActorSystem(botBehavior, "telegram-bot") val telegramBot = ActorSystem(botBehavior, "telegram-bot")
implicit val actorSystem: actor.ActorSystem = telegramBot.toUntyped implicit val actorSystem: actor.ActorSystem = telegramBot.toUntyped
implicit val executionContext: ExecutionContextExecutor = telegramBot.dispatchers.lookup(DispatcherSelector.default()) implicit val executionContext: ExecutionContextExecutor = telegramBot.dispatchers.lookup(DispatcherSelector.default())

View File

@@ -34,7 +34,7 @@ object TelegramBot {
case object GetBotInfo case object GetBotInfo
case object GetWebhookInfo case object GetWebhookInfo
def behavior(botId: String, interface: String, port: Int): Behavior[Command] = Behaviors.setup[Command] { ctx => def behavior(botId: String, interface: String, localPort: Int, hookPort: Int): Behavior[Command] = Behaviors.setup[Command] { ctx =>
ctx.log.info("action=start_bot") ctx.log.info("action=start_bot")
implicit val untypedSystem: ActorSystem = ctx.system.toUntyped implicit val untypedSystem: ActorSystem = ctx.system.toUntyped
@@ -44,7 +44,7 @@ object TelegramBot {
val botUri = BotUri(botId) val botUri = BotUri(botId)
val http: HttpExt = Http() val http: HttpExt = Http()
val hookId = UUID.randomUUID().toString val hookId = UUID.randomUUID().toString
val webhookUri = Uri(s"https://xeppaka.eu:88/$hookId") val webhookUri = Uri(s"https://xeppaka.eu:$hookPort/$hookId")
val httpsContext = createHttpsConnectionContext val httpsContext = createHttpsConnectionContext
val stashBuffer = StashBuffer[Command](10) val stashBuffer = StashBuffer[Command](10)
val dialogManager = ctx.spawnAnonymous(Behaviors.supervise(DialogManager.behavior(botUri)).onFailure(SupervisorStrategy.restart)) val dialogManager = ctx.spawnAnonymous(Behaviors.supervise(DialogManager.behavior(botUri)).onFailure(SupervisorStrategy.restart))
@@ -54,10 +54,10 @@ object TelegramBot {
case class BindingSuccess(binding: Http.ServerBinding) extends Command case class BindingSuccess(binding: Http.ServerBinding) extends Command
case class BindingFailure(exception: Throwable) extends Command case class BindingFailure(exception: Throwable) extends Command
ctx.log.info("action=bind_server interface={} port={}", interface, port) ctx.log.info("action=bind_server interface={} port={}", interface, localPort)
http http
.bindAndHandle(routes, interface, port, httpsContext) .bindAndHandle(routes, interface, localPort, httpsContext)
.onComplete { .onComplete {
case Success(binding) => ctx.self ! BindingSuccess(binding) case Success(binding) => ctx.self ! BindingSuccess(binding)
case Failure(exception) => ctx.self ! BindingFailure(exception) case Failure(exception) => ctx.self ! BindingFailure(exception)
@@ -81,7 +81,7 @@ object TelegramBot {
case object UnbindingSuccess extends Command case object UnbindingSuccess extends Command
case class UnbindingFailure(exception: Throwable) extends Command case class UnbindingFailure(exception: Throwable) extends Command
ctx.log.info("action=unbind_server interface={} port={}", interface, port) ctx.log.info("action=unbind_server interface={} port={}", interface, localPort)
binding binding
.unbind() .unbind()