Have ideas to improve npm?Join in the discussion! »

    onedrive-api

    1.0.1 • Public • Published

    onedrive-api

    CircleCI

    OneDrive API module for NodeJS. This module handels operations with OneDrive API. For authenticating with OneDrive, we suggest using OS solutions like simple-oauth2. We are accepting pull requests for any missing features

    Install

    npm install onedrive-api

    API

    Items

    Examples

    Require module

    const oneDriveAPI = require('onedrive-api');
    oneDriveAPI.items.listChildren({
        accessToken: accessToken,
        itemId: 'root',
        drive: 'me', // 'me' | 'user' | 'drive' | 'group' | 'site'
        driveId: '' // BLANK | {user_id} | {drive_id} | {group_id} | {sharepoint_site_id}
      }).then((childrens) => {
      // list all children of given root directory
      //
      // console.log(childrens);
      // returns body of https://dev.onedrive.com/items/list.htm#response
      })

    items.createFolder

    Create Folder

    Returns: Promise<Object> - folder meta object

    Param Type Default Description
    params Object
    params.accessToken String OneDrive access token
    [params.rootItemId] String root Item id
    params.name String New folder name
    params.drive String 'me' If it's set to be either 'user'/'drive'/'group'/'site', params.driveId has to be set.
    params.driveId String undefined The id of the drive that was shared to you. Must be set if params.drive is set.
    oneDriveAPI.items.createFolder({
      accessToken: accessToken,
      rootItemId: "root",
      name: "Folder name"
    }).then((item) => {
    // console.log(item)
    // returns body of https://dev.onedrive.com/items/create.htm#response
    })

    items.delete

    Delete item (file or folder)

    Returns: Promise<void> - The promise will throw HttpError if the delete API fail.

    Param Type Default Description
    params Object
    params.accessToken String OneDrive access token
    params.itemId String Item id
    params.drive String 'me' If it's set to be either 'user'/'drive'/'group'/'site', params.driveId has to be set.
    params.driveId String undefined The id of the drive that was shared to you. Must be set if params.drive is set.
    oneDriveAPI.items.delete({
      accessToken: accessToken,
      itemId: createdFolder.id
    }).then(() => {
      // file is deleted
    }).catch((error) => {
      // error.response.statusCode => error code
      // error.response.statusMessage => error message
    })

    items.download

    Download item content

    Returns: ReadableStream - Readable stream with item's content

    Param Type Default Description
    params Object
    params.accessToken String OneDrive access token
    params.itemId String item id
    params.drive String 'me' If it's set to be either 'user'/'drive'/'group'/'site', params.driveId has to be set.
    params.driveId String undefined The id of the drive that was shared to you. Must be set if params.drive is set.
    const fileStream = oneDriveAPI.items.download({
      accessToken: accessToken,
      itemId: createdFolder.id
    });
    fileStream.pipe(SomeWritableStream);

    items.partialDownload

    Download item content partially. You must either provide graphDownloadURL or the itemId to download the file.

    If only the itemId is provided, the function will try to get the download URL for you with additional getMetadata() function call.

    Returns: Promise<ReadableStream> - A promise with the result is a Readable stream with partial item's content

    Param Type Default Description
    params Object
    params.accessToken String OneDrive access token
    params.graphDownloadURL String @microsoft.graph.downloadUrl of the item
    params.itemId String item id. This parameter will be skipped if graphDownloadURL is provided.
    params.bytesFrom Number 0 Starting download byte.
    params.bytesTo Number Ending byte to download. Must be set
    params.drive String 'me' Only be used if only params.itemId is set and params.graphDownloadURL is undefined. If it's set to be either 'user'/'drive'/'group'/'site', params.driveId has to be set.
    params.driveId String undefined The id of the drive that was shared to you. Must be set if params.drive is set.
    const partialPromise = oneDriveAPI.items.partialDownload({
      accessToken: accessToken,
      bytesFrom: 0, // start byte
      bytesTo: 1034, // to byte
      graphDownloadURL: createdItem['@microsoft.graph.downloadUrl'],
      // optional params
      itemId: createdItem.id, // only be used when `graphDownloadURL` is NOT provided
      drive: 'me', // only be used when only `itemId` is provided
      driveId: 'me' // only be required when `drive` is provided
    });
    partialPromise.then(
      (fileStream) => fileStream.pipe(SomeWritableStream)
    );

    items.customEndpoint

    Call custom endpoint with JSON response.

    Returns: Promise<Object> - JSON object.

    Param Type Description
    params Object
    params.accessToken String OneDrive access token
    params.url String Endpoint url. Ex. 'groups/{groupId}/drives'
    params.body Object false
    params.method String Optional method
    oneDriveAPI.items.customEndpoint({
      accessToken: accessToken,
      url: 'me/drive/special/cameraroll',
      // method: 'GET'
      // body: {}
    }).then(r => {
      console.log(r)
    }).catch(e => {
      console.log(e)
    })

    items.sync

    Sync changes

    Returns: Promise<Object> - Object represent the changes since last sync

    Param Type Description
    params Object
    params.accessToken String OneDrive access token
    params.next String nextLink (or deltaLink returned from last session).
    oneDriveAPI.items.sync({
      accessToken: accessToken,
      next: 'https://graph.microsoft.com/v1.0/me/drive/delta(token=1230919asd190410jlka)'
    }).then((item) => {
      // console.log(item);
      // returns body of https://docs.microsoft.com/nb-no/onedrive/developer/rest-api/api/driveitem_delta?view=odsp-graph-online#response
    })

    items.getMetadata

    Get items metadata (file or folder)

    Returns: Promise<Object> - Item's metadata

    Param Type Default Description
    params Object
    params.accessToken String OneDrive access token
    params.itemId String Item id
    params.drive String 'me' If it's set to be either 'user'/'drive'/'group'/'site', params.driveId has to be set.
    params.driveId String undefined The id of the drive that was shared to you. Must be set if params.drive is set.
    oneDriveAPI.items.getMetadata({
      accessToken: accessToken,
      itemId: createdFolder.id
    }).then((item) => {
      // console.log(item);
      // returns body of https://dev.onedrive.com/items/update.htm#response
    })

    items.listChildren

    List childrens

    Returns: Promise<Object> - object of children items

    Param Type Default Description
    params Object
    params.accessToken String OneDrive access token
    [params.itemId] String root Item id
    params.drive String 'me' If it's set to be either 'user'/'drive'/'group'/'site', params.driveId has to be set.
    params.driveId String undefined The id of the drive that was shared to you. Must be set if params.drive is set.
    params.query String undefined OData system query options.
    oneDriveAPI.items.listChildren({
      accessToken: accessToken,
      itemId: createdFolder.id,
      query: '?$filter=createdDateTime le 2020-07-07T12:56:51.577Z'
    }).then((childrens) => {
    // console.log(childrens);
    // returns body of https://dev.onedrive.com/items/list.htm#response
    })

    items.update

    Update item metadata

    Returns: Promise<Object> - Item meta object

    Param Type Default Description
    params Object
    params.accessToken String OneDrive access token
    params.itemId String Item id
    params.toUpdate Object Object to update
    params.drive String 'me' If it's set to be either 'user'/'drive'/'group'/'site', params.driveId has to be set.
    params.driveId String undefined The id of the drive that was shared to you. Must be set if params.drive is set.
    oneDriveAPI.items.update({
      accessToken: accessToken,
      itemId: createdFolder.id,
      toUpdate: {
            name: "newFolderName"
          }
    }).then((item) => {
    // console.log(item);
    // returns body of https://dev.onedrive.com/items/update.htm#response
    })

    items.uploadSimple

    Create file with simple upload

    Returns: Promise<Object> - Item

    Param Type Default Description
    params Object
    params.accessToken String OneDrive access token
    params.filename String File name
    [params.parentId] String root Parent id
    [params.parentPath] String Parent path (if parentPath is defined, than parentId is ignored)
    params.readableStream Object Readable Stream with file's content
    params.drive String 'me' If it's set to be either 'user'/'drive'/'group'/'site', params.driveId has to be set.
    params.driveId String undefined The id of the drive that was shared to you. Must be set if params.drive is set.
    oneDriveAPI.items.uploadSimple({
      accessToken: accessToken,
      filename: filename,
      readableStream: readableStream
    }).then((item) => {
    // console.log(item);
    // returns body of https://dev.onedrive.com/items/upload_put.htm#response
    })

    items.uploadSession

    Create a file with session upload. Use this for the files over 4MB. This is a synchronous wrapper around asynchronous method, which means that on the failed upload you can't resume the upload but need to retry the implementation. I am accepting PRs for asynchronous implementation.

    Returns: Promise<Object> - Item

    Param Type Default Description
    params Object
    params.accessToken String OneDrive access token
    params.filename String File name
    params.fileSize Number Size of the file
    [params.parentId] String root Parent id
    [params.parentPath] String Parent path (if parentPath is defined, than parentId is ignored)
    params.readableStream Object Readable Stream with file's content
    params.drive string 'me' If it's set to be either 'user'/'drive'/'group'/'site', params.driveId has to be set.
    params.driveId String undefined The id of the drive that was shared to you. Must be set if params.drive is set.
    [params.chunksToUpload] Number 20 Chunks to upload per request. More chunks per request requires more RAM
    process function A callback emit a variable represent the bytes that were transferred
    oneDriveAPI.items.uploadSession({
      accessToken: accessToken,
      filename: filename,
      fileSize: fileSize,
      readableStream: readableStream
    }, (bytesUploaded) => {
      console.log(bytesUploaded)
    }).then((item) => {
    // console.log(item);
    // returns body of https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_createuploadsession?view=odsp-graph-online#http-response
    })

    Changelog

    Install

    npm i onedrive-api

    DownloadsWeekly Downloads

    228

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    37 kB

    Total Files

    22

    Last publish

    Collaborators

    • avatar