new Gdfs()
Gdfs class is an interface for the Google Drive API v3.
The instance manages a current working directory(CWD) and offers methods to operate files and folders on the Google Drive by its pathname.
Before creating an instance, the APIs must be loaded by the class method
loadApi
with a ClientId and ApiKey.
These had to be created in a project of Google devloper Console.
And to operates files, user must sign-in with the Google account. See signIn and signOut.
Instance's CWD is initialized to the root on constructor. It can be changed by chdir method. When it is changed, the 'oncwdupdate' callback is fired. To know where the CWD is, The cwd method is available.
Members
(static) mimeTypeFolder :string
A mime type of the Google Drive's folder.
Type:
- string
(static) signInStatusChangeEvent :GdfsEvent
signInStatusChangeEvent
Type:
Methods
(static) createClient() → {Gdfs}
Create Gdfs client.
Returns:
The google drive interface that has a current directory.
- Type
- Gdfs
(static) createFile(folderId, filename, mimeType) → {Promise.<object>}
Create a new file's resource.
Parameters:
Name | Type | Description |
---|---|---|
folderId |
string | The folder id where the file is created. |
filename |
string | The file name. |
mimeType |
string | The mime type for the new file. |
Returns:
The response of the API.
- Type
- Promise.<object>
(static) downloadFile(fileId, acknowledgeAbuse) → {Promise.<string>}
Get a file content as text from Google Drive. Even if the file is not a text actually, it could be converted to ArrayBuffer, Blob or JSON to use by Web App.
Parameters:
Name | Type | Description |
---|---|---|
fileId |
string | The file id to download. |
acknowledgeAbuse |
boolean | null | A user acknowledgment status for the potential to abuse. This parameter is optional. default value is false. |
Returns:
A downloaded content as text.
- Type
- Promise.<string>
(async, static) findFileByName(parentFolderId, fileName) → {Promise.<Array.<object>>}
Find a file by name from a folder.
Parameters:
Name | Type | Description |
---|---|---|
parentFolderId |
string | A parent folder id. |
fileName |
string | A file name to find |
Returns:
A folder list that found.
- Type
- Promise.<Array.<object>>
(async, static) findFolderByName(parentFolderId, folderName) → {Array.<object>}
Find a folder by name from a folder.
Parameters:
Name | Type | Description |
---|---|---|
parentFolderId |
string | A parent folder id. |
folderName |
string | A folder name to find |
Returns:
A folder list that found.
- Type
- Array.<object>
(async, static) getActualRootFolderId() → {Promise.<string>}
Get actual root folder id.
Returns:
The root folder's id
- Type
- Promise.<string>
(async, static) getFileList(queryParameters) → {Promise.<object>}
Get file list.
Parameters:
Name | Type | Description |
---|---|---|
queryParameters |
object | The parameters for the API. |
Returns:
The result of the API.
- Type
- Promise.<object>
(async, static) getFileResource(queryParameters) → {Promise.<object>}
Get file resource.
Parameters:
Name | Type | Description |
---|---|---|
queryParameters |
object | The parameters for the API. |
Returns:
The result of the API.
- Type
- Promise.<object>
(static) isFolder(file) → {boolean}
Check if the file is a folder.
Parameters:
Name | Type | Description |
---|---|---|
file |
object | The file object provided from the result
of |
Returns:
The file is a folder or not.
- Type
- boolean
(static) isSignedIn() → {boolean}
Check if gapi was signed in.
Returns:
true if gapi is signed in, otherwise false.
- Type
- boolean
(static) loadApi(clientId, clientSecret) → {Promise}
Load Google Drive APIs and initialize its client object.
The loaded all APIs are accessible with a global gapi
object.
But it is wrapped by this class so the users should not use it directly.
Parameters:
Name | Type | Description |
---|---|---|
clientId |
string | A clientId from the Developer console. |
clientSecret |
string | An clientSecret from the Developer console. |
Returns:
A promise that will be resolved when the loading completed.
- Type
- Promise
(async, static) signIn() → {undefined}
Sign in to Google Drive.
Returns:
- Type
- undefined
(async, static) signOut() → {undefined}
Sign out from the Google Drive.
Returns:
- Type
- undefined
(static) updateFile(fileId, mimeType, data) → {Promise.<object>}
Upload a file content to update a existing file.
Parameters:
Name | Type | Description |
---|---|---|
fileId |
string | The file id to update. |
mimeType |
string | The content type of the file. |
data |
any | The file content. |
Returns:
The response of the API.
- Type
- Promise.<object>
(async) chdir(directory) → {Promise.<boolean>}
Changes the current working directory of this client session.
Parameters:
Name | Type | Description |
---|---|---|
directory |
string | A pathname to operate. |
Returns:
the status of the operation.
- Type
- Promise.<boolean>
(async) chdirById(folderId) → {Promise.<boolean>}
Move current directory to root, parent or one of children.
Parameters:
Name | Type | Description |
---|---|---|
folderId |
string | A destination file id to move. To move to parent, ".." is available. |
Returns:
the status of the operation.
- Type
- Promise.<boolean>
cwd() → {string}
Get the current working directory of gdrive-fs.
Returns:
The current working directory.
- Type
- string
fireCwdUpdate() → {Promise}
Fire cwdUpdate.
Returns:
what the handler returns.
- Type
- Promise
getCurrentFolderId() → {string}
Get current folder id.
Returns:
The folder id that the instance is.
- Type
- string
getCurrentPath() → {GdfsPath}
Get current working directory as path object.
Returns:
the current working directory.
- Type
- GdfsPath
getFileOfPath(path) → {file}
Get the file object that the path points to.
Parameters:
Name | Type | Description |
---|---|---|
path |
GdfsPath | the path. |
Returns:
the file object of google drive.
- Type
- file
(async) getPaths(path) → {Promise.<Array.<object>>}
Get an array of path element from root directory.
Parameters:
Name | Type | Description |
---|---|---|
path |
GdfsPath | path object. |
Returns:
the array of the object having an id and the name.
- Type
- Promise.<Array.<object>>
(async) isDirectory(path) → {Promise.<Boolean>}
Check the path is a directory.
Parameters:
Name | Type | Description |
---|---|---|
path |
GdfsPath | A path to check |
Returns:
The path is a directory or not.
- Type
- Promise.<Boolean>
(async) mkdir(path) → {Promise.<object>}
Make a directory.
Parameters:
Name | Type | Description |
---|---|---|
path |
string | A pathname to operate. |
Returns:
The API response.
- Type
- Promise.<object>
onCwdUpdate(handler) → {undefined|function}
Set oncwdchage callback hander.
Parameters:
Name | Type | Description |
---|---|---|
handler |
FUnction | AsyncFunction | a function to be invoked when the current directory is changed. |
Returns:
the previous handler will be returned.
- Type
- undefined | function
(async) readdir(path, options) → {Promise.<Array.<string>>}
Read the directory to get a list of filenames.
This method may not returns all files in the directory.
To know all files were listed, check the pageToken
field in the parameter
options
after the invocation.
If the reading was completed, the field would be set null
.
The rest files unread will be returned at the next invocation with same
parameters.
const readDirAll = async path => {
const opts = { pageSize: 10, pageToken: null };
const files = [];
do {
for(const fn of await files.readdir(path, opts)) {
files.push(fn);
}
} while(opts.pageToken != null);
};
Parameters:
Name | Type | Description |
---|---|---|
path |
string | A path to the directory. |
options |
object | null | (Optional) options for this method. Only two fields are available:
If this parameter is ommited, all files will be read. This is not recomended feature for the directory that has a number of files. |
Returns:
returns an array of filenames.
- Type
- Promise.<Array.<string>>
(async) readFile(path) → {Promise.<string>}
Read a file.
The file must have webContentLink in its resource to read the contents,
To get the resource, Use Gdfs#stat
.
Parameters:
Name | Type | Description |
---|---|---|
path |
string | A pathname to operate. |
Returns:
The file content.
- Type
- Promise.<string>
(async) rmdir(path) → {Promise.<(object|null)>}
Remove the directory but not a normal file. The operation will fail, if it is not a directory nor empty.
Parameters:
Name | Type | Description |
---|---|---|
path |
string | A pathname to operate. |
Returns:
Returns the API response. null means it was failed.
- Type
- Promise.<(object|null)>
(async) setCurrentPath(path) → {Promise.<boolean>}
Set current working directory with path object.
Parameters:
Name | Type | Description |
---|---|---|
path |
GdfsPath | the new current working directory. |
Returns:
the status of the operation.
- Type
- Promise.<boolean>
(async) stat(path) → {File}
Get file's properties. It is a file resource of Google Drive including id, name, mimeType, webContentLink and webViewLink about the file or directory.
Parameters:
Name | Type | Description |
---|---|---|
path |
string | A pathname. |
Returns:
The file resource of Google Drive including id, name, mimeType, webContentLink and webViewLink about the file or directory.
- Type
- File
toAbsolutePath(path) → {GdfsPath}
Convert to absolute path.
Parameters:
Name | Type | Description |
---|---|---|
path |
GdfsPath | path to be converted |
Returns:
An absolute path
- Type
- GdfsPath
(async) unlink(path) → {Promise.<(object|null)>}
Delete the file but not directory. This does not move the file to the trash-box.
Parameters:
Name | Type | Description |
---|---|---|
path |
string | A pathname to operate. |
Returns:
Returns the API response. null means it was failed.
- Type
- Promise.<(object|null)>
(async) writeFile(path, mimeType, data) → {Promise.<object>}
Write a file.
Parameters:
Name | Type | Description |
---|---|---|
path |
string | A pathname to operate. |
mimeType |
string | A mimeType of the file content. |
data |
string | A file content. |
Returns:
The API response.
- Type
- Promise.<object>