device.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package device
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/silenceper/wechat/context"
  6. "github.com/silenceper/wechat/util"
  7. )
  8. const (
  9. uriAuthorize = "https://api.weixin.qq.com/device/authorize_device"
  10. uriQRCode = "https://api.weixin.qq.com/device/create_qrcode"
  11. uriVerifyQRCode = "https://api.weixin.qq.com/device/verify_qrcode"
  12. uriBind = "https://api.weixin.qq.com/device/bind"
  13. uriUnbind = "https://api.weixin.qq.com/device/unbind"
  14. uriCompelBind = "https://api.weixin.qq.com/device/compel_bind"
  15. uriCompelUnbind = "https://api.weixin.qq.com/device/compel_unbind"
  16. uriState = "https://api.weixin.qq.com/device/get_stat"
  17. )
  18. //Device struct
  19. type Device struct {
  20. *context.Context
  21. }
  22. //NewDevice 实例
  23. func NewDevice(context *context.Context) *Device {
  24. device := new(Device)
  25. device.Context = context
  26. return device
  27. }
  28. // ResDeviceState 设备状态响应实体
  29. type ResDeviceState struct {
  30. util.CommonError
  31. Status int `json:"status"`
  32. StatusInfo string `json:"status_info"`
  33. }
  34. // State 设备状态查询
  35. func (d *Device) State(device string) (res ResDeviceState, err error) {
  36. var accessToken string
  37. if accessToken, err = d.GetAccessToken(); err != nil {
  38. return
  39. }
  40. uri := fmt.Sprintf("%s?access_token=%s&device_id=%s", uriState, accessToken, device)
  41. var response []byte
  42. if response, err = util.HTTPGet(uri); err != nil {
  43. return
  44. }
  45. if err = json.Unmarshal(response, &res); err != nil {
  46. return
  47. }
  48. if res.ErrCode != 0 {
  49. err = fmt.Errorf("DeviceState Error , errcode=%d , errmsg=%s", res.ErrCode, res.ErrMsg)
  50. return
  51. }
  52. return
  53. }