001/*
002 *  Copyright (c) 2023-2026, Agents-Flex (fuhai999@gmail.com).
003 *  <p>
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *  <p>
008 *  http://www.apache.org/licenses/LICENSE-2.0
009 *  <p>
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package com.agentsflex.core.model.client.impl;
017
018import com.agentsflex.core.model.exception.ModelException;
019import com.agentsflex.core.util.StringUtil;
020import okhttp3.Response;
021import okhttp3.ResponseBody;
022
023import java.io.IOException;
024
025class Util {
026
027    public static Throwable getFailureThrowable(Throwable t, Response response) {
028        if (t != null) {
029            return t;
030        }
031
032        if (response != null) {
033            String errMessage = "Response code: " + response.code();
034            String message = response.message();
035            if (StringUtil.hasText(message)) {
036                errMessage += ", message: " + message;
037            }
038            try (ResponseBody body = response.body()) {
039                if (body != null) {
040                    String string = body.string();
041                    if (StringUtil.hasText(string)) {
042                        errMessage += ", body: " + string;
043                    }
044                }
045            } catch (IOException e) {
046                // ignore
047            }
048            t = new ModelException(errMessage);
049        }
050
051        return t;
052
053    }
054}