// // HttpdnsRequest.h // NewHttpDNS // // Created by xuyecan on 2024/5/19. // Copyright © 2024 trustapp.com. All rights reserved. // #import NS_ASSUME_NONNULL_BEGIN #ifndef NewHTTPDNSQUERYIPTYPE #define NewHTTPDNSQUERYIPTYPE typedef enum { NewHttpDNS_IPTypeV4 = 0, //ipv4 NewHttpDNS_IPTypeV6 = 1, //ipv6 NewHttpDNS_IPTypeV64 = 2, //ipv4 + ipv6 } NewHttpDNS_IPType; typedef NS_OPTIONS(NSUInteger, HttpdnsQueryIPType) { HttpdnsQueryIPTypeAuto NS_SWIFT_NAME(auto) = 0, HttpdnsQueryIPTypeIpv4 = 1 << 0, HttpdnsQueryIPTypeIpv6 = 1 << 1, HttpdnsQueryIPTypeBoth = HttpdnsQueryIPTypeIpv4 | HttpdnsQueryIPTypeIpv6, }; #endif @interface HttpdnsRequest : NSObject /// 需要解析的域名 @property (nonatomic, copy) NSString *host; /// 解析超时时间,对于同步接口,即为最大等待时间,对于异步接口,即为最大等待回调时? /// 默认?秒,取值必须在0.5?- 5秒之? @property (nonatomic, assign) double resolveTimeoutInSecond; /// 查询IP类型 /// 默认为HttpdnsQueryIPTypeAuto,此类型下,SDK至少会请求解析ipv4地址,若判断到当前网络环境支持ipv6,则还会请求解析ipv6地址 /// HttpdnsQueryIPTypeIpv4,只请求解析ipv4 /// HttpdnsQueryIPTypeIpv6,只请求解析ipv6 /// HttpdnsQueryIPTypeBoth,不管当前网络环境是什么,会尝试同时请求解析ipv4地址和ipv6地址,这种用法,通常需要拿到结果之后自行判断网络环境决定使用哪个结? @property (nonatomic, assign) HttpdnsQueryIPType queryIpType; /// SDNS参数,针对软件自定义解析场景使用 @property (nonatomic, copy, nullable) NSDictionary *sdnsParams; /// 缓存Key,针对软件自定义解析场景使用 @property (nonatomic, copy, nullable) NSString *cacheKey; /// 请求所属的账号ID,用于在多账号场景下定位实例 @property (nonatomic, assign) NSInteger accountId; - (instancetype)initWithHost:(NSString *)host queryIpType:(HttpdnsQueryIPType)queryIpType; - (instancetype)initWithHost:(NSString *)host queryIpType:(HttpdnsQueryIPType)queryIpType sdnsParams:(nullable NSDictionary *)sdnsParams cacheKey:(nullable NSString *)cacheKey; - (instancetype)initWithHost:(NSString *)host queryIpType:(HttpdnsQueryIPType)queryIpType sdnsParams:(nullable NSDictionary *)sdnsParams cacheKey:(nullable NSString *)cacheKey resolveTimeout:(double)timeoutInSecond; @end NS_ASSUME_NONNULL_END