device.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. uriState = "https://api.weixin.qq.com/device/get_stat"
  15. )
  16. //Device struct
  17. type Device struct {
  18. *context.Context
  19. }
  20. //NewDevice 实例
  21. func NewDevice(context *context.Context) *Device {
  22. device := new(Device)
  23. device.Context = context
  24. return device
  25. }
  26. type resDeviceState struct {
  27. util.CommonError
  28. Status int `json:"status"`
  29. StatusInfo string `json:"status_info"`
  30. }
  31. // State 设备状态查询
  32. func (d *Device) State(deviceId string) (res resDeviceState, err error) {
  33. var accessToken string
  34. if accessToken, err = d.GetAccessToken(); err != nil {
  35. return
  36. }
  37. uri := fmt.Sprintf("%s?access_token=%s&device_id=%s", uriState, accessToken, deviceId)
  38. var response []byte
  39. if response, err = util.HTTPGet(uri); err != nil {
  40. return
  41. }
  42. if err = json.Unmarshal(response, &res); err != nil {
  43. return
  44. }
  45. if res.ErrCode != 0 {
  46. err = fmt.Errorf("DeviceState Error , errcode=%d , errmsg=%s", res.ErrCode, res.ErrMsg)
  47. return
  48. }
  49. return
  50. }