Merge pull request #741 from BTreeNewBee/maaHTTP

doc.HTTP接口相关文档优化
This commit is contained in:
iguigui
2022-06-04 21:26:34 +08:00
committed by GitHub
6 changed files with 69 additions and 5 deletions

View File

@@ -124,7 +124,8 @@ MAA 的意思是 MAA Assistant Arknights
- [Python 接口](src/Python/asst.py)[集成示例](src/Python/sample.py)
- [Golang 接口](src/Golang/maa/)[集成示例](src/Golang/cli.go)(已停止维护 orz
- [Dart 接口](src/dart/)
- [Java 接口](src/Java/Maaj)[集成示例](src/Java/Maaj/src/main/java/com/iguigui/maaj/MaaJavaSample.java)
- [Java 接口](src/Java/Maaj/src/main/java/com/iguigui/maaj/easySample/MeoAssistant.java)[集成示例](src/Java/Maaj/src/main/java/com/iguigui/maaj/easySample/MaaJavaSample.java)
- [HTTP接口](src/Java/Maaj/Readme.md)
- [集成文档](docs/集成文档.md)
- [回调消息协议](docs/回调消息协议.md)
- [任务流程协议](docs/任务流程协议.md)

View File

@@ -1,6 +1,7 @@
# Maa-HTTP接口实现
本项目为通过JNA(Java-Native-Access)调用Maa核心实现的HTTP+WebSocket接口实现.
基于JNA(Java-Native-Access)调用Maa核心的HTTP+WebSocket接口实现.
仅在Windows下进行过测试未在Linux下测试过(相信强大的Linux用户自己可以解决问题
## 接口实现情况
@@ -13,8 +14,9 @@
| 开始执行 | start | Yes | Yes |
| 停止执行 | stop | Yes | Yes |
| 销毁实例 | destroy | Yes | Yes |
| 列出实例连接 | listInstance | Yes | Yes |
| 列出实例连接 | listInstance | Yes | Yes |
| 消息回调通知 | callBack | No | Yes |
| 获取截图 | getImage | Yes | No |
## 环境依赖
@@ -27,7 +29,7 @@
## 使用方法
1. 把他丢进Maa文件夹下,形成如下文件结构.
1. 把他丢进Maa文件夹下,形成如下文件结构.备注: 启动脚本[Maa-HTTP-Server-startup.bat](Maa-HTTP-Server-startup.bat).
```
MeoAssistantArknights_v3.9.0-beta.8
@@ -66,6 +68,7 @@ MeoAssistantArknights_v3.9.0-beta.8
| 停止执行 | stop |
| 销毁实例 | destroy |
| 列出连接 | listInstance |
| 获取截图 | getImage |
---
@@ -418,6 +421,29 @@ MeoAssistantArknights_v3.9.0-beta.8
| uuid | 设备备ID保留 | String | - |
| status | 0待机中,1任务执行中 | Int | - |
---
##### 接口名称 获取截图
###### 1) 请求地址
> http://127.0.0.1:8848/API/V1/getImage
###### 2) 调用方式HTTP get
###### 3) 请求参数:
###### Get参数:
| 字段名称 | 字段说明 | 类型 | 必填 | 备注 |
| ---- |--------|--------|---- |-----|
| id | 创建连接返回的实例ID | String | Y | - |
###### 4) 请求返回结果: 图片内容,PNG格式
### WebSocket部分
请求地址(没错跟HTTP同样是8848钛金端口

View File

@@ -161,6 +161,13 @@ data class DestroyRequest(
val id: String,
)
@Serializable
data class GetImage(
@SerialName("id")
val id: String,
)
@SerialName("connect")
@Serializable
data class WsRequest(

View File

@@ -3,10 +3,12 @@ package com.iguigui.maaj.routing
import com.iguigui.maaj.dto.*
import com.iguigui.maaj.service.MaaService
import com.iguigui.maaj.service.MaaService.appendTask
import io.ktor.http.*
import io.ktor.server.application.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.utils.io.*
import kotlinx.serialization.json.jsonObject
@@ -63,6 +65,18 @@ fun Application.httpRouting() {
val list = MaaService.listInstance()
call.respond(ListInstanceResponse(list).wapperToHttpResponse())
}
get("/getImage") {
val id = call.request.queryParameters["id"]
id?.let {
MaaService.getImage(it)?.run {
call.respondBytes(this, ContentType("image", "png"))
}
}
}
post("/listInstance") {
val list = MaaService.listInstance()
call.respond(ListInstanceResponse(list).wapperToHttpResponse())
}
}
}
}

View File

@@ -82,4 +82,16 @@ class MaaInstance(
fun stop() = instance.AsstStop(pointer)
fun destroy() = instance.AsstDestroy(pointer)
fun getImage(): ByteArray? {
val size = 1024 * 1024 * 6
val byteArray = ByteArray(size)
val length = instance.AsstGetImage(pointer, byteArray, size.toLong())
if (length == 0L) {
return null
}
val target = ByteArray(length.toInt())
System.arraycopy(byteArray,0,target,0,length.toInt())
return target
}
}

View File

@@ -21,7 +21,7 @@ object MaaService {
val meoAssistant: MeoAssistant by lazy {
var maaPath = File(File("").absolutePath).parent
logger.info("maaPath $maaPath")
// maaPath = "C:\\Users\\atmzx\\Desktop\\MeoAssistantArknights3"
maaPath = "C:\\Users\\atmzx\\Desktop\\MeoAssistantArknights3"
System.setProperty("jna.library.path", maaPath)
val load = Native.load("MeoAssistant", MeoAssistant::class.java)
load.AsstLoadResource(maaPath)
@@ -95,4 +95,8 @@ object MaaService {
this.wsConnection -= connection
}
fun getImage(id: String): ByteArray? {
return instancePool[id]?.getImage()
}
}