Une personne qui souhaite utiliser AWS Lambda
Slack
en
Java` dans
Kotlin`Tel.
macOS Mojave 10.14.5
IntelliJ IDEA
ultimateDocker
installé (requis pour le développement local)https://github.com/yu-suke-dev/fanza-bot
[sample]
├── HelloWorldFunction
│ ├── build.gradle
│ ├── gradle
│ │ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ └── src
│ ├── main
│ │ └── java
│ │ └── helloworld
│ │ ├── App.java
│ │ └── GatewayResponse.java
│ └── test
│ └── java
│ └── helloworld
│ └── AppTest.java
├── README.md
├── sample.iml
└── template.yaml
build.gradle
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.3.40'
}
apply plugin: 'kotlin'
repositories {
mavenCentral()
}
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
jar {
manifest {
attributes('Main-Class': 'fanza.App')
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
dependencies {
compile "com.amazonaws:aws-lambda-java-core:1.2.0"
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.40"
compile "com.squareup.okhttp3:okhttp:3.9.0"
compile "org.json:json:20180813"
testCompile "junit:junit:4.12"
}
[src]
├── main
│ └── kotlin
│ └── fanza
│ └── App.java
└── test
│ └── java
│ └── fanza
│ └── AppTest.java
App.kt
package fanza
import com.amazonaws.services.lambda.runtime.Context
import com.amazonaws.services.lambda.runtime.RequestHandler
import okhttp3.MediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
import org.json.JSONObject
import java.io.IOException
/**
* Handler for requests to Lambda function.
*/
class App : RequestHandler<Any, Any> {
/**
* called method
*/
override fun handleRequest(input: Any, context: Context): Any {
try {
//ID requis pour l'API fanza
var fanzaApiId = System.getenv("FANZA_API_ID")
var affiliateId = System.getenv("FANZA_AFFILIATE_ID")
//Créez l'URL que vous souhaitez rechercher
val fanzaUrl: String = "https://api.dmm.com/affiliate/v3/ItemList"
.plus("?api_id=$fanzaApiId")
.plus("&affiliate_id=$affiliateId")
.plus("&site=FANZA&service=digital&floor=videoa")
.plus("&hits=20&sort=date&keyword=amateur&output=json")
//ACCÉDER À FANZA
val fanzaInfo = get(fanzaUrl).replace("\\", "")
//Expression régulière de la partie que vous souhaitez extraire
val regex = Regex("https://www.dmm.co.jp/litevideo/-/part/=/cid=[a-z]{3,5}[0-9]{3,5}/size=720_480/")
//Extrayez-en un au hasard des résultats extraits
val result: String = regex.findAll(fanzaInfo)
.map { it.value }
.toList()
.random()
//URL du Webhook Slack
var slackUrl: String = System.getenv("SLACK_URL")
//Quoi envoyer à Slack
var slackJson = JSONObject()
slackJson.put("channel", "#fanza")
slackJson.put("username", "fanza-bot")
slackJson.put("text", result)
slackJson.put("icon_emoji", ":womens:")
//post envoyer
post(slackUrl, slackJson.toString())
return "Success"
} catch (e: IOException) {
return RuntimeException(e)
}
}
/**
* get
*/
@Throws(IOException::class)
operator fun get(url: String): String {
val request = Request.Builder()
.url(url)
.header("Content-Type", "application/json")
.addHeader("X-Custom-Header", "application/json")
.build()
val client = OkHttpClient.Builder().build()
val response = client.newCall(request).execute()
return response.body()!!.string()
}
/**
* post
*/
@Throws(IOException::class)
fun post(url: String, json: String): String {
val body = RequestBody
.create(MediaType.parse("application/json; charset=utf-8"), json)
val request = Request.Builder()
.url(url)
.put(body)
.build()
val client = OkHttpClient()
return client.newCall(request).execute().body()!!.string()
}
}
gradle jar
Enregistrer le produit: omis. Enregistrez le produit en vous référant aux articles suivants. https://qiita.com/shogo_m/items/9aa7b400a031e8503e7f
Créer un projet: sélectionnez ʻIoT 1-Click` sur l'écran de la console AWS
Spécifier le nom du projet
Spécifiez la fonction Lambda créée ici.
Appuie sur le bouton. (Pochi)
Recommended Posts