| 
					
				 | 
			
			
				@@ -69,7 +69,7 @@ func setDevice(target *models.Device, src *models.Device) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	target.ID = src.ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	target.ProductID = src.ProductID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	target.DeviceIdentifier = src.DeviceIdentifier 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	target.DeviceSecret = src.DeviceIdentifier 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	target.DeviceSecret = src.DeviceSecret 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	target.DeviceKey = src.DeviceKey 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	target.DeviceName = src.DeviceName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	target.DeviceDescription = src.DeviceDescription 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -381,13 +381,23 @@ func (r *Registry) FindDeviceById(args uint64, reply *models.Device) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	d := &models.Device{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	d.ID = uint(args) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	err = db.Where(d).First(reply).Error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cache := getCache() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	key := fmt.Sprintf("Device:%v", args) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if v, ok := cache.Get(key);ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		device := v.(*models.Device) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		setDevice(reply, device) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Printf("%v\r\n", device) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		d := &models.Device{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		d.ID = uint(args) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		err = db.Where(d).First(reply).Error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		cache.Set(key, reply) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -399,7 +409,7 @@ func (r *Registry) FindDeviceByRecordId(args *rpcs.ArgsDeviceAuth, reply *models 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	cache := getCache() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	key := fmt.Sprintf("Device:%v", args.DeviceID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if v, ok := cache.Get(key); ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if v, ok := cache.Get(key);ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		device := v.(*models.Device) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		setDevice(reply, device) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -414,9 +424,12 @@ func (r *Registry) FindDeviceByRecordId(args *rpcs.ArgsDeviceAuth, reply *models 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		cache.Set(key, &storage) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // ValidateDevice will validate a device key and return the model if success. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func (r *Registry) ValidateDevice(key string, device *models.Device) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	id, err := r.keygen.DecodeIDFromRandomKey(key) 
			 |