@@ -19,11 +19,10 @@ type HuaChenIpClient struct {
cache ICacheAdapter
}
func NewHuaChenIpClient ( appCode string , cache ICacheAdapter ) * HuaChenIpClient {
func NewHuaChenIpClient ( appCode string ) * HuaChenIpClient {
return & HuaChenIpClient {
AppCode : appCode ,
Host : "https://c2ba.api.huachen.cn" ,
cache : cache ,
}
}
@@ -90,13 +89,19 @@ func (h *HuaChenIpClient) GetIpInfo(ip string) (res *ApiResult, err error) {
return & apiResult , nil
}
func ( h * HuaChenIpClient ) G etIpInfoFormCache ( ctx context . Context , ip string , ttl time . Duration ) ( res * ApiResult , err erro r) {
getCache , err := h . cache . Get ( ctx , h . ipKey ( ip ) )
if err != nil {
return nil , errors . Wrapf ( err , "获取缓存失败, ip:%s" , ip )
}
if getC ache != nil {
return getCache , nil
func ( h * HuaChenIpClient ) S et( cache ICacheAdapte r) {
h . cache = cache
}
func ( h * HuaChenIpClient ) GetIpInfoFormCache ( ctx context . Context , ip string , opt ... time . Duration ) ( res * ApiResult , err error ) {
if h . c ache != nil {
res , err = h . cache . Get ( ctx , h . ipKey ( ip ) )
if err != nil {
return nil , errors . Wrapf ( err , "获取缓存失败, ip:%s" , ip )
}
if res != nil {
return res , nil
}
}
res , err = h . GetIpInfo ( ip )
if err != nil {
@@ -109,9 +114,11 @@ func (h *HuaChenIpClient) GetIpInfoFormCache(ctx context.Context, ip string, ttl
return nil , errors . Wrapf ( err , "无法将IP信息转换为JSON, ip:%s" , ip )
}
err = h . cache . Set ( ctx , h . ipKey ( ip ) , string ( infoJson ) , ttl )
if err ! = nil {
return nil , errors . Wrapf ( err , "缓存ip:%s信息失败, " , ip )
if len ( opt ) == 0 {
err = h . cache . Set ( ctx , h . ipKey ( ip ) , string ( infoJson ) , opt [ 0 ] )
if err != nil {
return nil , errors . Wrapf ( err , "缓存ip:%s信息失败, " , ip )
}
}
return
}