GoogleDriveFileSystem

com.github.cloudfiles.gdrive.GoogleDriveFileSystem
See theGoogleDriveFileSystem companion object
class GoogleDriveFileSystem(val config: GoogleDriveConfig) extends ExtensibleFileSystem[String, GoogleDriveFile, GoogleDriveFolder, FolderContent[String, GoogleDriveFile, GoogleDriveFolder]]

The GoogleDrive-specific implementation of the com.github.cloudfiles.core.FileSystem trait.

This class sends HTTP requests against the GoogleDrive API to manipulate files and folders. Note that the configuration allows setting a custom URI (which should normally only be necessary for tests), but there is no property to select a drive of a specific user. This information is contained in the credentials (typically an OAuth token) managed by the request actor.

GoogleDrive has an organization, which in some ways differs from typical hierarchical file systems. A single element can have multiple parents, and there is, therefore, no concept of a unique path to a specific element. This makes the ''resolvePath()'' operation quite expensive, because it has to navigate through all the folders starting from the root folder. Even resolving the root ID is not trivial if a root path has been configured. So, the most efficient way to use this ''FileSystem'' implementation is to make use of element IDs as far as possible.

Value parameters

config

the configuration for this ''FileSystem''

Attributes

Companion
object
Graph
Supertypes
trait ExtensibleFileSystem[String, GoogleDriveFile, GoogleDriveFolder, FolderContent[String, GoogleDriveFile, GoogleDriveFolder]]
trait FileSystem[String, GoogleDriveFile, GoogleDriveFolder, FolderContent[String, GoogleDriveFile, GoogleDriveFolder]]
trait AutoCloseable
class Object
trait Matchable
class Any
Show all

Members list

Value members

Concrete methods

override def createFile(parent: String, file: File[String], content: Source[ByteString, Any])(implicit system: ActorSystem[_]): Operation[String]

Creates a file as a child of the given parent folder by uploading the file's content and setting some metadata attributes. The attributes to set are provided in form of a file object; typically some properties are mandatory, such as the file name and the file size. If the operation is successful, the ID of the new file is returned.

Creates a file as a child of the given parent folder by uploading the file's content and setting some metadata attributes. The attributes to set are provided in form of a file object; typically some properties are mandatory, such as the file name and the file size. If the operation is successful, the ID of the new file is returned.

Value parameters

content

a ''Source'' with the content of the file

file

an object with the attributes of the new file

parent

the ID of the parent folder

system

the actor system

Attributes

Returns

the ''Operation'' to create a new file

Definition Classes
FileSystem
override def createFolder(parent: String, folder: Folder[String])(implicit system: ActorSystem[_]): Operation[String]

Creates a folder as a child of the given parent folder. The attributes of the new folder are defined by the folder object provided. If the operation is successful, the ID of the new folder is returned.

Creates a folder as a child of the given parent folder. The attributes of the new folder are defined by the folder object provided. If the operation is successful, the ID of the new folder is returned.

Value parameters

folder

an object with the attributes of the new folder

parent

the ID of the parent folder

system

the actor system

Attributes

Returns

the ''Operation'' to create a new folder

Definition Classes
FileSystem
override def deleteFile(fileID: String)(implicit system: ActorSystem[_]): Operation[Unit]

Deletes the file with the given ID.

Deletes the file with the given ID.

Value parameters

fileID

the ID of the file to delete

system

the actor system

Attributes

Returns

the ''Operation'' to delete the file

Definition Classes
FileSystem
override def deleteFolder(folderID: String)(implicit system: ActorSystem[_]): Operation[Unit]

Deletes the folder with the given ID. Note that depending on the concrete implementation, it may be required that a folder is empty before it can be deleted. The root folder can typically not be deleted.

Deletes the folder with the given ID. Note that depending on the concrete implementation, it may be required that a folder is empty before it can be deleted. The root folder can typically not be deleted.

Value parameters

folderID

the ID of the folder to delete

system

the actor system

Attributes

Returns

the ''Operation'' to delete a folder

Definition Classes
FileSystem
override def downloadFile(fileID: String)(implicit system: ActorSystem[_]): Operation[HttpEntity]

Returns an entity for downloading the content of a file. The download can be performed by creating a stream with the data bytes of the resulting entity. Note that the entity must be consumed in all cases, either by running the stream with the data bytes or by discarding the bytes.

Returns an entity for downloading the content of a file. The download can be performed by creating a stream with the data bytes of the resulting entity. Note that the entity must be consumed in all cases, either by running the stream with the data bytes or by discarding the bytes.

Value parameters

fileID

the ID of the file affected

system

the actor system

Attributes

Returns

the ''Operation'' to obtain an entity for downloading a file

Definition Classes
FileSystem
def folderContent(id: String, includeTrashed: Boolean)(implicit system: ActorSystem[_]): Operation[FolderContent[String, GoogleDriveFile, GoogleDriveFolder]]

Returns an object describing the content of the folder with the given ID, allowing control whether trashed files should be included. This is analogous to the overloaded function, but instead of using the ''includeTrashed'' flag from the configuration, the flag can be specified explicitly.

Returns an object describing the content of the folder with the given ID, allowing control whether trashed files should be included. This is analogous to the overloaded function, but instead of using the ''includeTrashed'' flag from the configuration, the flag can be specified explicitly.

Value parameters

id

the ID of the folder

includeTrashed

flag whether to include trashed files

system

the actor system

Attributes

Returns

the ''Operation'' returning the content of this folder

override def folderContent(id: String)(implicit system: ActorSystem[_]): Operation[FolderContent[String, GoogleDriveFile, GoogleDriveFolder]]

Returns an object describing the content of the folder with the given ID. This can be used to find the files and the folders that are the children of the folder with the ID specified.

Returns an object describing the content of the folder with the given ID. This can be used to find the files and the folders that are the children of the folder with the ID specified.

Value parameters

id

the ID of the folder in question

system

the actor system

Attributes

Returns

the ''Operation'' returning the content of this folder

Definition Classes
FileSystem
override def patchFile(source: File[String], spec: ElementPatchSpec): GoogleDriveFile

Constructs an implementation specific file object based on the properties of the given source file with the given patch specification applied. This allows components that extend the functionality of a ''FileSystem'' to manipulate the attributes of a file without having to know the concrete implementation class.

Constructs an implementation specific file object based on the properties of the given source file with the given patch specification applied. This allows components that extend the functionality of a ''FileSystem'' to manipulate the attributes of a file without having to know the concrete implementation class.

Value parameters

source

the source file

spec

the ''ElementPatchSpec'' to manipulate properties

Attributes

Returns

the resulting file object

Definition Classes
ExtensibleFileSystem
override def patchFolder(source: Folder[String], spec: ElementPatchSpec): GoogleDriveFolder

Constructs an implementation-specific folder object based on the properties of the given source folder with the given patch specification applied. This allows components that extend the functionality of a ''FileSystem'' to manipulate the attributes of a folder without having to know the concrete implementation class.

Constructs an implementation-specific folder object based on the properties of the given source folder with the given patch specification applied. This allows components that extend the functionality of a ''FileSystem'' to manipulate the attributes of a folder without having to know the concrete implementation class.

Value parameters

source

the source folder

spec

the ''ElementPatchSpec'' to manipulate properties

Attributes

Returns

the resulting folder object

Definition Classes
ExtensibleFileSystem
override def resolveFile(id: String)(implicit system: ActorSystem[_]): Operation[GoogleDriveFile]

Returns the file identified by the given ID.

Returns the file identified by the given ID.

Value parameters

id

the ID of the file in question

system

the actor system

Attributes

Returns

the ''Operation'' returning the file with this ID

Definition Classes
FileSystem
override def resolveFolder(id: String)(implicit system: ActorSystem[_]): Operation[GoogleDriveFolder]

Returns the folder identified by the given ID.

Returns the folder identified by the given ID.

Value parameters

id

the ID of the folder in question

system

the actor system

Attributes

Returns

the ''Operation'' returning the folder with this ID

Definition Classes
FileSystem
def resolvePath(path: String, includeTrashed: Boolean)(implicit system: ActorSystem[_]): Operation[String]

Resolves the ID of an element (file or folder) that is specified by its path, allowing control whether to include trashed files. This is analogous to the overloaded function, but instead of using the ''includeTrashed'' flag from the configuration, the flag can be specified explicitly.

Resolves the ID of an element (file or folder) that is specified by its path, allowing control whether to include trashed files. This is analogous to the overloaded function, but instead of using the ''includeTrashed'' flag from the configuration, the flag can be specified explicitly.

Value parameters

includeTrashed

the flag whether to include trashed files

path

the path to resolve

system

the actor system

Attributes

Returns

the ''Operation'' to resolve the path

override def resolvePath(path: String)(implicit system: ActorSystem[_]): Operation[String]

Resolves the ID of an element (file or folder) that is specified by its path. This function is analogous to ''resolvePathComponents()'', but the target element of the operation is identified by a URI-like path. It is assumed that the single components in this path are encoded as necessary to yield a valid URI.

Resolves the ID of an element (file or folder) that is specified by its path. This function is analogous to ''resolvePathComponents()'', but the target element of the operation is identified by a URI-like path. It is assumed that the single components in this path are encoded as necessary to yield a valid URI.

Value parameters

path

the path to be resolved

system

the actor system

Attributes

Returns

the ''Operation'' to resolve the path

Definition Classes
FileSystem
def resolvePathComponents(components: Seq[String], includeTrashed: Boolean)(implicit system: ActorSystem[_]): Operation[String]
override def resolvePathComponents(components: Seq[String])(implicit system: ActorSystem[_]): Operation[String]

Resolves the ID of an element (file or folder) that is specified by a sequence of path components. The components define the names of folders to traverse from the root in order to come to the target element. In a hierarchical file system, there is typically a direct relation between a path and a URI that uniquely identifies an element. But not all file systems are hierarchical; e.g. in Google Drive a single file can be contained in multiple folders, so a resolve operation can be actually complex. The single components passed to this function should be plain file or folder names; no encoding is expected. This implementation encodes the components and concatenates them to a path URI and invokes ''resolvePath()'' with this path.

Resolves the ID of an element (file or folder) that is specified by a sequence of path components. The components define the names of folders to traverse from the root in order to come to the target element. In a hierarchical file system, there is typically a direct relation between a path and a URI that uniquely identifies an element. But not all file systems are hierarchical; e.g. in Google Drive a single file can be contained in multiple folders, so a resolve operation can be actually complex. The single components passed to this function should be plain file or folder names; no encoding is expected. This implementation encodes the components and concatenates them to a path URI and invokes ''resolvePath()'' with this path.

Value parameters

components

the sequence of path components

system

the actor system

Attributes

Returns

the ''Operation'' to resolve these path components

Definition Classes
FileSystem
override def rootID(implicit system: ActorSystem[_]): Operation[String]

Returns the ID of the root folder of this file system. This can be used as starting point to iterate over the content stored in the file system.

Returns the ID of the root folder of this file system. This can be used as starting point to iterate over the content stored in the file system.

Value parameters

system

the actor system

Attributes

Returns

the ''Operation'' returning the ID of the file system root

Definition Classes
FileSystem
def updateElement(id: String, spec: WritableFile)(implicit system: ActorSystem[_]): Operation[Unit]

Updates the metadata of an element (file or folder) according to the given ''WritableFile'' object. This function can be easier to use than the default update() functions offered by the ''FileSystem'' trait, as a ''WritableFile'' object allows specifying the exact properties that should be updated.

Updates the metadata of an element (file or folder) according to the given ''WritableFile'' object. This function can be easier to use than the default update() functions offered by the ''FileSystem'' trait, as a ''WritableFile'' object allows specifying the exact properties that should be updated.

Value parameters

id

the ID of the element to update

spec

a ''WritableFile'' with the properties to update

system

the actor system

Attributes

Returns

the ''Operation'' that updates the element

override def updateFile(file: File[String])(implicit system: ActorSystem[_]): Operation[Unit]

Updates the metadata of a file. The passed in file object must contain the ID of the file affected and the attributes to set.

Updates the metadata of a file. The passed in file object must contain the ID of the file affected and the attributes to set.

Value parameters

file

the object representing the file

system

the actor system

Attributes

Returns

the ''Operation'' to update file metadata

Definition Classes
FileSystem
override def updateFileAndContent(file: File[String], content: Source[ByteString, Any])(implicit system: ActorSystem[_]): Operation[Unit]

Combines an operation to update the content of a file with an operation to update its metadata properties. This base implementation delegates to the corresponding functions (''updateFileContent()'' and ''updateFile()'') in series. Implementations that can combine these updates in a single operation should override this function. Depending on the concrete underlying file system, it may be necessary to specify the new file size in the passed in file object.

Combines an operation to update the content of a file with an operation to update its metadata properties. This base implementation delegates to the corresponding functions (''updateFileContent()'' and ''updateFile()'') in series. Implementations that can combine these updates in a single operation should override this function. Depending on the concrete underlying file system, it may be necessary to specify the new file size in the passed in file object.

Value parameters

content

a source with the new content of the file

file

a data object with the properties of the file to update

system

the actor system

Attributes

Returns

the ''Operation'' that does the combined update

Definition Classes
FileSystem
override def updateFileContent(fileID: String, size: Long, content: Source[ByteString, Any])(implicit system: ActorSystem[_]): Operation[Unit]

Updates the content of a file by uploading new data to the server.

Updates the content of a file by uploading new data to the server.

Value parameters

content

a ''Source'' with the content of the file

fileID

the ID of the file affected

size

the size of the new content

system

the actor system

Attributes

Returns

the ''Operation'' to upload new file content

Definition Classes
FileSystem
override def updateFolder(folder: Folder[String])(implicit system: ActorSystem[_]): Operation[Unit]

Updates the metadata of a folder. The passed in folder object must contain the ID of the folder affected and the attributes to update.

Updates the metadata of a folder. The passed in folder object must contain the ID of the folder affected and the attributes to update.

Value parameters

folder

the object representing the folder

system

the actor system

Attributes

Returns

the ''Operation'' to update folder metadata

Definition Classes
FileSystem

Inherited methods

override def close(): Unit

Frees up resources used by this object when it is no longer needed. This base implementation does nothing.

Frees up resources used by this object when it is no longer needed. This base implementation does nothing.

Attributes

Definition Classes
FileSystem -> AutoCloseable
Inherited from:
FileSystem
def resolveFileByPath(path: String)(implicit system: ActorSystem[_]): Operation[FILE]

Returns the file object that is referenced by the path specified. This is a combination of resolving the path and obtaining the file with the resulting ID.

Returns the file object that is referenced by the path specified. This is a combination of resolving the path and obtaining the file with the resulting ID.

Value parameters

path

the path of the desired file

system

the actor system

Attributes

Returns

the ''Operation'' to resolve the file with this path

Inherited from:
FileSystem
def resolveFolderByPath(path: String)(implicit system: ActorSystem[_]): Operation[FOLDER]

Returns the folder object that is referenced by the path specified. This is a combination of resolving the path and obtaining the folder with the resulting ID.

Returns the folder object that is referenced by the path specified. This is a combination of resolving the path and obtaining the folder with the resulting ID.

Value parameters

path

the path to the desired folder

system

the actor system

Attributes

Returns

the ''Operation'' to resolve the folder with this path

Inherited from:
FileSystem
def rootFolderContent(implicit system: ActorSystem[_]): Operation[FOLDER_CONTENT]

Returns an object with the content of the root folder. This is a combination of requesting the root folder ID and requesting the content of this folder.

Returns an object with the content of the root folder. This is a combination of requesting the root folder ID and requesting the content of this folder.

Value parameters

system

the actor system

Attributes

Returns

the ''Operation'' to obtain the content of the root folder

Inherited from:
FileSystem

Concrete fields