github.com/qiniu/go-sdk/v7@v7.27.0/linking/deviceKey.go (about) 1 package linking 2 3 import ( 4 "context" 5 "encoding/base64" 6 ) 7 8 // 设备密钥管理 9 type DeviceKey struct { 10 AccessKey string `json:"accessKey"` // 设备的 accessKey 11 SecretKey string `json:"secretKey"` // 设备的 secretkey 12 State int `json:"state"` // 密钥对状态,1表示被禁用,0表示已启用 13 CreatedAt int64 `json:"createdAt"` // 创建时间 14 } 15 16 // 新增设备的密钥,每个设备最多有两对密钥 17 func (manager *Manager) AddDeviceKey(appid, device string) ([]DeviceKey, error) { 18 device = base64.URLEncoding.EncodeToString([]byte(device)) 19 20 ret := struct { 21 Keys []DeviceKey `json:"keys"` 22 }{} 23 err := manager.client.Call(context.Background(), &ret, "POST", manager.url("/apps/%s/devices/%s/keys", appid, device), nil) 24 if err != nil { 25 return nil, err 26 } 27 return ret.Keys, nil 28 } 29 30 // 查询指定设备的密钥 31 func (manager *Manager) QueryDeviceKey(appid, device string) ([]DeviceKey, error) { 32 device = base64.URLEncoding.EncodeToString([]byte(device)) 33 34 ret := struct { 35 Keys []DeviceKey `json:"keys"` 36 }{} 37 38 err := manager.client.Call(context.Background(), &ret, "GET", manager.url("/apps/%s/devices/%s/keys", appid, device), nil) 39 if err != nil { 40 return nil, err 41 } 42 return ret.Keys, nil 43 } 44 45 // 删除设备的密钥 46 func (manager *Manager) DeleteDeviceKey(appid, device, dak string) error { 47 device = base64.URLEncoding.EncodeToString([]byte(device)) 48 49 return manager.client.Call(context.Background(), nil, "DELETE", manager.url("/apps/%s/devices/%s/keys/%s", appid, device, dak), nil) 50 } 51 52 // 禁用、启用设备的密钥 53 func (manager *Manager) UpdateDeviceKeyState(appid, device, dak string, state int) error { 54 device = base64.URLEncoding.EncodeToString([]byte(device)) 55 56 req := M{"state": state} 57 return manager.client.CallWithJson(context.Background(), nil, "POST", manager.url("/apps/%s/devices/%s/keys/%s/state", appid, device, dak), nil, req) 58 } 59 60 // 某个设备的密钥克隆给新的设备,不用重新对设备进行烧录新的密钥 61 func (manager *Manager) CloneDeviceKey(appid, fromdevice, todevice string, cleanSelfKeys, deleteDevice bool, deviceAccessKey string) ([]DeviceKey, error) { 62 todevice = base64.URLEncoding.EncodeToString([]byte(todevice)) 63 req := M{"fromDevice": fromdevice, "cleanSelfKeys": cleanSelfKeys, "deleteDevice": deleteDevice, "deviceAccessKey": deviceAccessKey} 64 ret := struct { 65 Keys []DeviceKey `json:"cloneKeys"` 66 }{} 67 err := manager.client.CallWithJson(context.Background(), &ret, "POST", manager.url("/apps/%s/devices/%s/keys/clone", appid, todevice), nil, req) 68 if err != nil { 69 return nil, err 70 } 71 return ret.Keys, nil 72 } 73 74 func (manager *Manager) QueryAppidDeviceNameByAccessKey(dak string) (string, string, error) { 75 ret := struct { 76 Appid string `json:"appid"` 77 Device string `json:"device"` 78 }{} 79 err := manager.client.Call(context.Background(), &ret, "GET", manager.url("/keys/%s", dak), nil) 80 if err != nil { 81 return "", "", err 82 } 83 return ret.Appid, ret.Device, nil 84 }