|
|
package amap
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
"github.com/dtapps/go-library/utils/gojson"
|
|
|
"github.com/dtapps/go-library/utils/gorequest"
|
|
|
"net/http"
|
|
|
)
|
|
|
|
|
|
type WeatherWeatherInfoResponse struct {
|
|
|
Status string `json:"status"` // 值为0或1 1:成功;0:失败
|
|
|
Count string `json:"count"` // 返回结果总数目
|
|
|
Info string `json:"info"` // 返回的状态信息
|
|
|
Infocode string `json:"infocode"` // 返回状态说明,10000代表正确
|
|
|
Lives []struct {
|
|
|
Province string `json:"province"` // 省份名
|
|
|
City string `json:"city"` // 城市名
|
|
|
Adcode string `json:"adcode"` // 区域编码
|
|
|
Weather string `json:"weather"` // 天气现象(汉字描述)
|
|
|
Temperature string `json:"temperature"` // 实时气温,单位:摄氏度
|
|
|
Winddirection string `json:"winddirection"` // 风向描述
|
|
|
Windpower string `json:"windpower"` // 风力级别,单位:级
|
|
|
Humidity string `json:"humidity"` // 空气湿度
|
|
|
Reporttime string `json:"reporttime"` // 数据发布的时间
|
|
|
TemperatureFloat string `json:"temperature_float"` // 温度
|
|
|
HumidityFloat string `json:"humidity_float"` // 湿度
|
|
|
} `json:"lives"` // 实况天气数据信息
|
|
|
Forecasts []struct {
|
|
|
City string `json:"city"` // 城市名称
|
|
|
Adcode string `json:"adcode"` // 城市编码
|
|
|
Province string `json:"province"` // 省份名称
|
|
|
Reporttime string `json:"reporttime"` // 预报发布时间
|
|
|
Casts []struct {
|
|
|
Date string `json:"date"` // 日期
|
|
|
Week string `json:"week"` // 星期几
|
|
|
Dayweather string `json:"dayweather"` // 白天天气现象
|
|
|
Nightweather string `json:"nightweather"` // 晚上天气现象
|
|
|
Daytemp string `json:"daytemp"` // 白天温度
|
|
|
Nighttemp string `json:"nighttemp"` // 晚上温度
|
|
|
Daywind string `json:"daywind"` // 白天风向
|
|
|
Nightwind string `json:"nightwind"` // 晚上风向
|
|
|
Daypower string `json:"daypower"` // 白天风力
|
|
|
Nightpower string `json:"nightpower"` // 晚上风力
|
|
|
DaytempFloat string `json:"daytemp_float"` // 日温度
|
|
|
NighttempFloat string `json:"nighttemp_float"` // 夜间温度
|
|
|
} `json:"casts"` // 预报数据list结构,元素cast,按顺序为当天、第二天、第三天的预报数据
|
|
|
} `json:"forecasts"` // 预报天气信息数据
|
|
|
}
|
|
|
|
|
|
type WeatherWeatherInfoResult struct {
|
|
|
Result WeatherWeatherInfoResponse // 结果
|
|
|
Body []byte // 内容
|
|
|
Http gorequest.Response // 请求
|
|
|
}
|
|
|
|
|
|
func newWeatherWeatherInfoResult(result WeatherWeatherInfoResponse, body []byte, http gorequest.Response) *WeatherWeatherInfoResult {
|
|
|
return &WeatherWeatherInfoResult{Result: result, Body: body, Http: http}
|
|
|
}
|
|
|
|
|
|
// WeatherWeatherInfo 天气查询
|
|
|
// https://lbs.amap.com/api/webservice/guide/api/weatherinfo
|
|
|
func (c *Client) WeatherWeatherInfo(ctx context.Context, city string, notMustParams ...gorequest.Params) (*WeatherWeatherInfoResult, error) {
|
|
|
// 参数
|
|
|
params := gorequest.NewParamsWith(notMustParams...)
|
|
|
params.Set("key", c.GetKey())
|
|
|
params.Set("city", city)
|
|
|
params.Set("output", "JSON")
|
|
|
// 请求
|
|
|
request, err := c.request(ctx, apiUrl+"/weather/weatherInfo", params, http.MethodGet)
|
|
|
if err != nil {
|
|
|
return newWeatherWeatherInfoResult(WeatherWeatherInfoResponse{}, request.ResponseBody, request), err
|
|
|
}
|
|
|
// 定义
|
|
|
var response WeatherWeatherInfoResponse
|
|
|
err = gojson.Unmarshal(request.ResponseBody, &response)
|
|
|
return newWeatherWeatherInfoResult(response, request.ResponseBody, request), err
|
|
|
}
|