//DeleteFile tries to delete file from the camera, and returns error if it fails func (camera *Camera) DeleteFile(path *CameraFilePath) error { fileDir := C.CString(path.Folder) defer C.free(unsafe.Pointer(fileDir)) fileName := C.CString(path.Name) defer C.free(unsafe.Pointer(fileName)) retval := C.gp_camera_file_delete(camera.gpCamera, fileDir, fileName, camera.gpContext) if retval != gpOk { return fmt.Errorf("Cannot delete fine on camera, error code :%v", retval) } return nil }
//DownloadImage saves image pointed by path to the provided buffer. If leave on camera is set to false,the file will be deleted from the camera internal storage func (file *CameraFilePath) DownloadImage(buffer io.Writer, leaveOnCamera bool) error { gpFile, err := newGpFile() if err != nil { return err } defer C.gp_file_free(gpFile) fileDir := C.CString(file.Folder) defer C.free(unsafe.Pointer(fileDir)) fileName := C.CString(file.Name) defer C.free(unsafe.Pointer(fileName)) if retval := C.gp_camera_file_get(file.camera.gpCamera, fileDir, fileName, FileTypeNormal, gpFile, file.camera.gpContext); retval != gpOk { return fmt.Errorf("Cannot download photo file, error code :%v", retval) } err = getFileBytes(gpFile, buffer) if err != nil && leaveOnCamera == false { C.gp_camera_file_delete(file.camera.gpCamera, fileDir, fileName, file.camera.gpContext) } return err }