From df580020417febcad82f1798f367e89f69ba3750 Mon Sep 17 00:00:00 2001 From: mojo Date: Wed, 5 Nov 2025 15:42:50 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=20TaskReportServ?= =?UTF-8?q?ice=EF=BC=8C=E6=8F=90=E5=8D=87=E4=BB=A3=E7=A0=81=E5=8F=AF?= =?UTF-8?q?=E8=AF=BB=E6=80=A7=E5=92=8C=E5=8F=AF=E7=BB=B4=E6=8A=A4=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/service/TaskReportService.kt | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 lib/src/main/java/com/example/service/TaskReportService.kt diff --git a/lib/src/main/java/com/example/service/TaskReportService.kt b/lib/src/main/java/com/example/service/TaskReportService.kt new file mode 100644 index 0000000..1f37936 --- /dev/null +++ b/lib/src/main/java/com/example/service/TaskReportService.kt @@ -0,0 +1,62 @@ +package com.example.service + +import com.example.action.HttpMethod +import com.example.http.HttpClient +import com.example.http.HttpClient.call +import com.example.http.Request +import com.example.http.Response +import com.example.logger.LogUtils +import com.example.report.TaskExec +import com.example.request.BaseRequest +import com.example.request.ReportTaskRequest +import com.example.utils.toJsonString +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +class TaskReportService( + private val taskExec: TaskExec, + private val reportUrl: String, + private val baseRequest: BaseRequest +) { + + companion object { + private const val CONTENT_TYPE_STREAM = HttpClient.Params.REQUEST_HEADER_CONTENT_TYPE_STREAM + } + + suspend fun run(): Response = withContext(Dispatchers.IO) { + val request = buildRequest() + logRequest(request) + request.call() + } + + private fun buildRequest(): Request { + val requestBody = buildRequestBody() + return Request( + url = reportUrl, + headers = buildHeaders(), + method = HttpMethod.Post, + body = requestBody.toByteArray() + ) + } + + private fun buildHeaders(): Map { + return mapOf( + HttpClient.Params.REQUEST_HEADER_CONTENT_TYPE to CONTENT_TYPE_STREAM, + HttpClient.Params.REQUEST_HEADER_ACCEPT to CONTENT_TYPE_STREAM + ) + } + + private fun buildRequestBody(): String { + val reportRequest = ReportTaskRequest( + baseRequest, + taskLogs = listOf(taskExec) + ) + return reportRequest.toJsonString() + } + + private fun logRequest(request: Request) { + val requestData = String(request.body) + LogUtils.info("TaskReportService request-data: $requestData") + LogUtils.info("TaskReportService request-url: ${request.url}") + } +} \ No newline at end of file