// Path: BiliLiveLib/src/main/java/charlie/bililivelib/I18n.java
// public class I18n {
//     public static final String BUNDLE_NAME = "BiliLiveLib";
//     private static Map<String, String> strings;
// 
//     static {
//         init();
//     }
// 
//     /**
//      * 重新依照当前Locale获取并填充本地化字符串。在切换Locale后调用。
//      */
//     public static void init() {
//         strings = new HashMap<>();
//         fillResourceBundle();
//     }
// 
//     private static void fillResourceBundle() {
//         ResourceBundle resourceBundle = ResourceBundle.getBundle(BUNDLE_NAME);
//         for (String key : resourceBundle.keySet()) {
//             strings.put(key, resourceBundle.getString(key));
//         }
//     }
// 
//     /**
//      * 获取给定Key的本地化文本。
//      * @param key 键
//      * @return 本地化文本
//      */
//     @Nls
//     public static String getString(@NonNls @NotNull String key) {
//         return strings.get(key);
//     }
// 
//     /**
//      * 获取基于给定Key的本地化格式化文本。
//      * @param key 指向格式化模式的键
//      * @param arguments 格式化文本的参数
//      * @return 本地化并格式化后的文本
//      */
//     @NotNull
//     public static String format(@NonNls @NotNull String key,
//                                 @NonNls @NotNull Object... arguments) {
//         return MessageFormat.format(strings.get(key), arguments);
//     }
// }


import charlie.bililivelib.I18n;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.Nls;
package charlie.bililivelib.exceptions;


/**
 * 标志发生了网络问题的异常。
 *
 * @author Charlie Jiang
 * @since rv1
 */
public class NetworkException extends BiliLiveException {
    public NetworkException() {
    }

    public NetworkException(String message) {
        super(message);
    }

    public NetworkException(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * 对于给定信息和Http错误，创建一个NetworkException。
     *
     * @param message 信息
     * @param status  Http状态码
     * @return NetworkException
     */
    @Contract("_, _ -> !null")
    public static NetworkException createHttpError(
            @Nls String message,
            int status) {
// Path: BiliLiveLib/src/main/java/charlie/bililivelib/I18n.java
// public class I18n {
//     public static final String BUNDLE_NAME = "BiliLiveLib";
//     private static Map<String, String> strings;
// 
//     static {
//         init();
//     }
// 
//     /**
//      * 重新依照当前Locale获取并填充本地化字符串。在切换Locale后调用。
//      */
//     public static void init() {
//         strings = new HashMap<>();
//         fillResourceBundle();
//     }
// 
//     private static void fillResourceBundle() {
//         ResourceBundle resourceBundle = ResourceBundle.getBundle(BUNDLE_NAME);
//         for (String key : resourceBundle.keySet()) {
//             strings.put(key, resourceBundle.getString(key));
//         }
//     }
// 
//     /**
//      * 获取给定Key的本地化文本。
//      * @param key 键
//      * @return 本地化文本
//      */
//     @Nls
//     public static String getString(@NonNls @NotNull String key) {
//         return strings.get(key);
//     }
// 
//     /**
//      * 获取基于给定Key的本地化格式化文本。
//      * @param key 指向格式化模式的键
//      * @param arguments 格式化文本的参数
//      * @return 本地化并格式化后的文本
//      */
//     @NotNull
//     public static String format(@NonNls @NotNull String key,
//                                 @NonNls @NotNull Object... arguments) {
//         return MessageFormat.format(strings.get(key), arguments);
//     }
// }


// Path: BiliLiveLib/src/main/java/charlie/bililivelib/exceptions/NetworkException.java
import charlie.bililivelib.I18n;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.Nls;

package charlie.bililivelib.exceptions;


/**
 * 标志发生了网络问题的异常。
 *
 * @author Charlie Jiang
 * @since rv1
 */
public class NetworkException extends BiliLiveException {
    public NetworkException() {
    }

    public NetworkException(String message) {
        super(message);
    }

    public NetworkException(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * 对于给定信息和Http错误，创建一个NetworkException。
     *
     * @param message 信息
     * @param status  Http状态码
     * @return NetworkException
     */
    @Contract("_, _ -> !null")
    public static NetworkException createHttpError(
            @Nls String message,
            int status) {
        return new NetworkException(message + I18n.format("exception.http_error", status));