You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-library/service/amap/ip.go

47 lines
1.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package amap
import (
"context"
"github.com/dtapps/go-library/utils/gojson"
"github.com/dtapps/go-library/utils/gorequest"
"net/http"
)
type IpResponse struct {
Status string `json:"status"` // 值为0或1,0表示失败1表示成功
Info string `json:"info"` // 返回状态说明status为0时info返回错误原因否则返回“OK”。
Infocode string `json:"infocode"` // 返回状态说明,10000代表正确,详情参阅info状态表
Province string `json:"province"` // 若为直辖市则显示直辖市名称; 如果在局域网 IP网段内则返回“局域网” 非法IP以及国外IP则返回空
City string `json:"city"` // 若为直辖市则显示直辖市名称; 如果为局域网网段内IP或者非法IP或国外IP则返回空
Adcode string `json:"adcode"` // 城市的adcode编码
Rectangle string `json:"rectangle"` // 所在城市矩形区域范围
}
type IpResult struct {
Result IpResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
}
func newIpResult(result IpResponse, body []byte, http gorequest.Response) *IpResult {
return &IpResult{Result: result, Body: body, Http: http}
}
// Ip IP定位
// https://lbs.amap.com/api/webservice/guide/api/ipconfig
func (c *Client) Ip(ctx context.Context, ip string, notMustParams ...gorequest.Params) (*IpResult, error) {
// 参数
params := gorequest.NewParamsWith(notMustParams...)
params.Set("key", c.GetKey())
params.Set("ip", ip)
// 请求
request, err := c.request(ctx, apiUrl+"/ip", params, http.MethodGet)
if err != nil {
return newIpResult(IpResponse{}, request.ResponseBody, request), err
}
// 定义
var response IpResponse
err = gojson.Unmarshal(request.ResponseBody, &response)
return newIpResult(response, request.ResponseBody, request), err
}