@@ -6,6 +6,7 @@ import { createHash, randomBytes } from "node:crypto";
66import { normalizeOptionalString } from "@openclaw/normalization-core/string-coerce" ;
77import { resolveExpiresAtMsFromDurationSeconds } from "../infra/parse-finite-number.js" ;
88import type { OAuthCredentials } from "../llm/oauth.js" ;
9+ import { readProviderJsonResponse } from "./provider-http-errors.js" ;
910
1011const CHUTES_OAUTH_ISSUER = "https://api.chutes.ai" ;
1112export const CHUTES_AUTHORIZE_ENDPOINT = `${ CHUTES_OAUTH_ISSUER } /idp/authorize` ;
@@ -115,7 +116,7 @@ async function fetchChutesUserInfo(params: {
115116 await cancelUnreadResponseBody ( response ) ;
116117 return null ;
117118 }
118- const data = ( await response . json ( ) ) as unknown ;
119+ const data = await readProviderJsonResponse < unknown > ( response , "Chutes userinfo" ) ;
119120 if ( ! data || typeof data !== "object" ) {
120121 return null ;
121122 }
@@ -155,11 +156,11 @@ export async function exchangeChutesCodeForTokens(params: {
155156 throw new Error ( `Chutes token exchange failed: ${ text } ` ) ;
156157 }
157158
158- const data = ( await response . json ( ) ) as {
159+ const data = await readProviderJsonResponse < {
159160 access_token ?: string ;
160161 refresh_token ?: string ;
161162 expires_in ?: number ;
162- } ;
163+ } > ( response , "Chutes token exchange" ) ;
163164
164165 const access = data . access_token ?. trim ( ) ;
165166 const refresh = data . refresh_token ?. trim ( ) ;
@@ -226,11 +227,11 @@ export async function refreshChutesTokens(params: {
226227 throw new Error ( `Chutes token refresh failed: ${ text } ` ) ;
227228 }
228229
229- const data = ( await response . json ( ) ) as {
230+ const data = await readProviderJsonResponse < {
230231 access_token ?: string ;
231232 refresh_token ?: string ;
232233 expires_in ?: number ;
233- } ;
234+ } > ( response , "Chutes token refresh" ) ;
234235 const access = data . access_token ?. trim ( ) ;
235236 const newRefresh = data . refresh_token ?. trim ( ) ;
236237 const expires = resolveChutesExpiresAt ( data . expires_in , now ) ;
0 commit comments