fix(bugcollect): LogUploader 自动将相对路径补全为绝对 URL
- bugCollectApiUrl 为相对路径时,基于 XuqmSDK.platformUrl 拼接完整地址 - 修复 'Expected URL scheme http or https' 异常
这个提交包含在:
父节点
3ded960383
当前提交
d742317c4d
@ -3,6 +3,7 @@ package com.xuqm.sdk.bugcollect.internal
|
|||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.xuqm.sdk.bugcollect.IssueEvent
|
import com.xuqm.sdk.bugcollect.IssueEvent
|
||||||
import com.xuqm.sdk.bugcollect.LogEvent
|
import com.xuqm.sdk.bugcollect.LogEvent
|
||||||
|
import com.xuqm.sdk.XuqmSDK
|
||||||
import okhttp3.MediaType.Companion.toMediaType
|
import okhttp3.MediaType.Companion.toMediaType
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
@ -26,9 +27,17 @@ internal object LogUploader {
|
|||||||
|
|
||||||
private val JSON_MEDIA = "application/json; charset=utf-8".toMediaType()
|
private val JSON_MEDIA = "application/json; charset=utf-8".toMediaType()
|
||||||
|
|
||||||
|
/** 将相对路径补全为绝对 URL(基于平台地址)。 */
|
||||||
|
private fun resolveUrl(path: String): String {
|
||||||
|
val trimmed = path.trimEnd('/')
|
||||||
|
if (trimmed.startsWith("http://") || trimmed.startsWith("https://")) return trimmed
|
||||||
|
val base = XuqmSDK.platformUrl.trimEnd('/')
|
||||||
|
return "$base/${trimmed.trimStart('/')}"
|
||||||
|
}
|
||||||
|
|
||||||
fun uploadIssues(logApiUrl: String, issues: List<IssueEvent>) {
|
fun uploadIssues(logApiUrl: String, issues: List<IssueEvent>) {
|
||||||
if (issues.isEmpty()) return
|
if (issues.isEmpty()) return
|
||||||
val url = "${logApiUrl.trimEnd('/')}/bugcollect/v1/issues/batch"
|
val url = "${resolveUrl(logApiUrl)}/bugcollect/v1/issues/batch"
|
||||||
val envelope = createEnvelope()
|
val envelope = createEnvelope()
|
||||||
val events = JSONArray()
|
val events = JSONArray()
|
||||||
for (issue in issues) {
|
for (issue in issues) {
|
||||||
@ -40,7 +49,7 @@ internal object LogUploader {
|
|||||||
|
|
||||||
fun uploadEvents(logApiUrl: String, events: List<LogEvent>) {
|
fun uploadEvents(logApiUrl: String, events: List<LogEvent>) {
|
||||||
if (events.isEmpty()) return
|
if (events.isEmpty()) return
|
||||||
val url = "${logApiUrl.trimEnd('/')}/bugcollect/v1/events/batch"
|
val url = "${resolveUrl(logApiUrl)}/bugcollect/v1/events/batch"
|
||||||
val envelope = createEnvelope()
|
val envelope = createEnvelope()
|
||||||
val eventsArray = JSONArray()
|
val eventsArray = JSONArray()
|
||||||
for (event in events) {
|
for (event in events) {
|
||||||
@ -51,7 +60,7 @@ internal object LogUploader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun uploadIssue(logApiUrl: String, issue: IssueEvent) {
|
fun uploadIssue(logApiUrl: String, issue: IssueEvent) {
|
||||||
val url = "${logApiUrl.trimEnd('/')}/bugcollect/v1/issues/batch"
|
val url = "${resolveUrl(logApiUrl)}/bugcollect/v1/issues/batch"
|
||||||
val envelope = createEnvelope()
|
val envelope = createEnvelope()
|
||||||
val events = JSONArray().put(issueToJson(issue))
|
val events = JSONArray().put(issueToJson(issue))
|
||||||
envelope.put("events", events)
|
envelope.put("events", events)
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户