add documentation for cloud functions

commit_hash:91ee6d5933ef8c09be1c4f3fbd72ed7d689931e0
This commit is contained in:
gulevsky
2025-03-27 15:27:16 +03:00
parent 767a777525
commit 613b433cc1
8 changed files with 192 additions and 0 deletions
+7
View File
@@ -20081,6 +20081,13 @@
"readme_pictures/search.png":"divkit/public/readme_pictures/search.png",
"readme_pictures/smart_cam.png":"divkit/public/readme_pictures/smart_cam.png",
"readme_pictures/ya_browser.png":"divkit/public/readme_pictures/ya_browser.png",
"samples/cloud-functions/kotlin-dsl/build.gradle.kts":"divkit/public/samples/cloud-functions/kotlin-dsl/build.gradle.kts",
"samples/cloud-functions/kotlin-dsl/build.sh":"divkit/public/samples/cloud-functions/kotlin-dsl/build.sh",
"samples/cloud-functions/kotlin-dsl/src/main/kotlin/cloud/divkit/Handler.kt":"divkit/public/samples/cloud-functions/kotlin-dsl/src/main/kotlin/cloud/divkit/Handler.kt",
"samples/cloud-functions/kotlin-dsl/src/main/kotlin/cloud/divkit/Request.kt":"divkit/public/samples/cloud-functions/kotlin-dsl/src/main/kotlin/cloud/divkit/Request.kt",
"samples/cloud-functions/kotlin-dsl/src/main/kotlin/cloud/divkit/Response.kt":"divkit/public/samples/cloud-functions/kotlin-dsl/src/main/kotlin/cloud/divkit/Response.kt",
"samples/cloud-functions/kotlin-dsl/src/main/kotlin/cloud/divkit/Utils.kt":"divkit/public/samples/cloud-functions/kotlin-dsl/src/main/kotlin/cloud/divkit/Utils.kt",
"samples/cloud-functions/simple/Handler.kt":"divkit/public/samples/cloud-functions/simple/Handler.kt",
"schema/common.json":"divkit/public/schema/common.json",
"schema/div-absolute-edge-insets.json":"divkit/public/schema/div-absolute-edge-insets.json",
"schema/div-accessibility.json":"divkit/public/schema/div-accessibility.json",
@@ -0,0 +1,13 @@
plugins {
kotlin("jvm") version "2.0.0"
}
repositories {
mavenCentral()
}
dependencies {
implementation("com.fasterxml.jackson.core:jackson-annotations:2.18.3")
implementation("com.fasterxml.jackson.core:jackson-databind:2.18.3")
implementation("com.yandex.div:kotlin-json-builder:31.0.0")
}
+30
View File
@@ -0,0 +1,30 @@
#!/bin/bash
SCRIPT_DIR=`dirname ${0}`
ARCHIVE_NAME="build"
while getopts ":n:" option; do
case $option in
n)
ARCHIVE_NAME="$OPTARG"
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument" >&2
exit 1
;;
esac
if [[ $OPTARG == -* ]]; then
echo "Option $option has invalid argument: $OPTARG" >&2
exit 1
fi
done
cd $SCRIPT_DIR
zip -rDX $ARCHIVE_NAME.zip * -x build.sh -x *.zip -x build -x .idea
@@ -0,0 +1,90 @@
package cloud.divkit
import divkit.dsl.Divan
import divkit.dsl.bold
import divkit.dsl.border
import divkit.dsl.center
import divkit.dsl.color
import divkit.dsl.container
import divkit.dsl.data
import divkit.dsl.divan
import divkit.dsl.edgeInsets
import divkit.dsl.fixedSize
import divkit.dsl.medium
import divkit.dsl.solidBackground
import divkit.dsl.text
import divkit.dsl.vertical
import divkit.dsl.wrapContentSize
fun handle(request: Request): Response {
val card = greetingCard()
return Response(200, card.toJson())
}
private fun greetingCard(): Divan {
return divan {
data(
logId = "greeting",
div = container(
width = wrapContentSize(),
height = wrapContentSize(),
orientation = vertical,
margins = edgeInsets(
start = 16,
top = 16,
end = 16,
bottom = 16
),
paddings = edgeInsets(
start = 4,
top = 4,
end = 4,
bottom = 4
),
background = listOf(
solidBackground(color("#FF9000"))
),
border = border(
cornerRadius = 8
),
items = listOf(
text(
width = wrapContentSize(),
height = wrapContentSize(),
alignmentHorizontal = center,
fontSize = 20,
fontWeight = bold,
textColor = color("#FFFFFF"),
text = "HELLO"
),
text(
width = wrapContentSize(),
height = wrapContentSize(),
alignmentHorizontal = center,
fontSize = 14,
textColor = color("#FFFFFF"),
text = "my name is"
),
text(
width = fixedSize(120),
height = fixedSize(48),
margins = edgeInsets(
top = 4
),
background = listOf(
solidBackground(color("#FFFFFF"))
),
border = border(
cornerRadius = 4
),
fontSize = 32,
fontWeight = medium,
textAlignmentHorizontal = center,
textAlignmentVertical = center,
text = "DivKit"
)
)
)
)
}
}
@@ -0,0 +1,7 @@
package cloud.divkit
data class Request(
val httpMethod: String?,
val headers: Map<String, String> = mapOf(),
val body: String = ""
)
@@ -0,0 +1,6 @@
package cloud.divkit
data class Response(
val statusCode: Int,
val body: String
)
@@ -0,0 +1,8 @@
package cloud.divkit
import com.fasterxml.jackson.databind.json.JsonMapper
import divkit.dsl.Divan
fun Divan.toJson(): String {
return JsonMapper.builder().build().writeValueAsString(this)
}
+31
View File
@@ -0,0 +1,31 @@
package cloud.divkit
data class Request(
val httpMethod: String?,
val headers: Map<String, String> = mapOf(),
val body: String = ""
)
data class Response(
val statusCode: Int,
val body: String
)
fun handle(request: Request): Response {
return Response(200, card)
}
private const val card = """
{
"log_id": "cloud_divkit",
"states": [
{
"state_id": 0,
"div": {
"type": "text",
"text": "Hello, Username!"
}
}
]
}
"""