58 lines
2.1 KiB
C
58 lines
2.1 KiB
C
|
|
//
|
|||
|
|
// KBNetworkManager.h
|
|||
|
|
// CustomKeyboard
|
|||
|
|
//
|
|||
|
|
// 轻量网络层封装(扩展安全)。支持 GET/POST(JSON)。
|
|||
|
|
// 注意:键盘扩展需要"允许完全访问"后才可联网,
|
|||
|
|
// 建议由宿主控制器在确认后调用 `setEnabled:YES` 再发起请求。
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#import <Foundation/Foundation.h>
|
|||
|
|
|
|||
|
|
NS_ASSUME_NONNULL_BEGIN
|
|||
|
|
|
|||
|
|
extern NSErrorDomain const KBNetworkErrorDomain;
|
|||
|
|
typedef NS_ERROR_ENUM(KBNetworkErrorDomain, KBNetworkError) {
|
|||
|
|
KBNetworkErrorDisabled = 1, // 未启用网络(例如未开启完全访问)
|
|||
|
|
KBNetworkErrorInvalidURL = 2,
|
|||
|
|
KBNetworkErrorInvalidResponse = 3,
|
|||
|
|
KBNetworkErrorDecodeFailed = 4,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/// 简单的 JSON 回调:json 为 NSDictionary/NSArray 或者在非 JSON 情况下返回 NSData
|
|||
|
|
typedef void(^KBNetworkCompletion)(id _Nullable jsonOrData, NSURLResponse * _Nullable response, NSError * _Nullable error);
|
|||
|
|
|
|||
|
|
@interface KBNetworkManager : NSObject
|
|||
|
|
|
|||
|
|
/// 单例
|
|||
|
|
+ (instancetype)shared;
|
|||
|
|
|
|||
|
|
/// 是否允许网络(默认为 NO,宿主在合适时机置 YES)
|
|||
|
|
@property (atomic, assign, getter=isEnabled) BOOL enabled;
|
|||
|
|
|
|||
|
|
/// 可选的基础域名,例如 https://api.example.com
|
|||
|
|
@property (nonatomic, strong, nullable) NSURL *baseURL;
|
|||
|
|
|
|||
|
|
/// 全局默认请求头(每次请求会与局部 headers 合并,局部优先)
|
|||
|
|
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> *defaultHeaders;
|
|||
|
|
|
|||
|
|
/// 超时时间(默认 10s)
|
|||
|
|
@property (nonatomic, assign) NSTimeInterval timeout;
|
|||
|
|
|
|||
|
|
/// GET 请求,parameters 会拼到 URL 上
|
|||
|
|
- (nullable NSURLSessionDataTask *)GET:(NSString *)path
|
|||
|
|
parameters:(nullable NSDictionary *)parameters
|
|||
|
|
headers:(nullable NSDictionary<NSString *, NSString *> *)headers
|
|||
|
|
completion:(KBNetworkCompletion)completion;
|
|||
|
|
|
|||
|
|
/// POST JSON 请求,jsonBody 会以 application/json 发送
|
|||
|
|
- (nullable NSURLSessionDataTask *)POST:(NSString *)path
|
|||
|
|
jsonBody:(nullable id)jsonBody
|
|||
|
|
headers:(nullable NSDictionary<NSString *, NSString *> *)headers
|
|||
|
|
completion:(KBNetworkCompletion)completion;
|
|||
|
|
|
|||
|
|
@end
|
|||
|
|
|
|||
|
|
NS_ASSUME_NONNULL_END
|
|||
|
|
|