浏览代码

Truncate response body in error message

Svilen Markov 1 年之前
父节点
当前提交
faeeb7c899
共有 1 个文件被更改,包括 22 次插入2 次删除
  1. 22 2
      internal/feed/requests.go

+ 22 - 2
internal/feed/requests.go

@@ -23,6 +23,16 @@ func addBrowserUserAgentHeader(request *http.Request) {
 	request.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0")
 }
 
+func truncateString(s string, maxLen int) string {
+	asRunes := []rune(s)
+
+	if len(asRunes) > maxLen {
+		return string(asRunes[:maxLen])
+	}
+
+	return s
+}
+
 func decodeJsonFromRequest[T any](client RequestDoer, request *http.Request) (T, error) {
 	response, err := client.Do(request)
 	var result T
@@ -40,7 +50,12 @@ func decodeJsonFromRequest[T any](client RequestDoer, request *http.Request) (T,
 	}
 
 	if response.StatusCode != http.StatusOK {
-		return result, fmt.Errorf("unexpected status code %d for %s, response: %s", response.StatusCode, request.URL, string(body))
+		return result, fmt.Errorf(
+			"unexpected status code %d for %s, response: %s",
+			response.StatusCode,
+			request.URL,
+			truncateString(string(body), 128),
+		)
 	}
 
 	err = json.Unmarshal(body, &result)
@@ -76,7 +91,12 @@ func decodeXmlFromRequest[T any](client RequestDoer, request *http.Request) (T,
 	}
 
 	if response.StatusCode != http.StatusOK {
-		return result, fmt.Errorf("unexpected status code %d for %s, response: %s", response.StatusCode, request.URL, string(body))
+		return result, fmt.Errorf(
+			"unexpected status code %d for %s, response: %s",
+			response.StatusCode,
+			request.URL,
+			truncateString(string(body), 128),
+		)
 	}
 
 	err = xml.Unmarshal(body, &result)