Skip to content

Add functionality to download a file #65

Open
@edif2008

Description

@edif2008

Summary

Starting with Connect 1.3.0, the users can get files that are stored in an Item. Connect Node SDK should enable the users to do that.

In this issue, we will enable the user to download a file stored in 1Password.

Tasks to be done

  • Implement downloadFile function in the Items class in src/lib/resources.ts. The API endpoint that this function needs to call is v1/vaults/vaultId/items/itemId/files/fileId/content. You'll have to figure out the object type the promise expects.
    /**
     * Download an Item's File in the provided path.
     *
     * @param {string} vaultId
     * @param {string} itemQuery
     * @param {string} fileId
     * @param {string} targetDirectory
     * @param {boolean} overwrite
     * @returns {Promise<string>}
     * @private
     */
    private async getFileContent(
             vaultId: string,
             itemQuery: string,
             fileId: string,
             targetDirectory: string,
             overwrite: boolean,
         ): Promise<string> {
         // functionality
    }
    Note: Feel free to place this functionality in a separate class (e.g. Files) if you feel it's more suitable. This is just a suggested approach.
  • Implement downloadFile function in OPConnect class in src/lib/op-connect.ts:
    /**
     * Download an Item's File in the provided path.
     *
     * @param {string} vaultId
     * @param {string} itemQuery
     * @param {string} fileId
     * @returns {Promise<string>}
     */
    public async downloadFile(vaultId: string, itemQuery: string, fileId: string. targetDirectory: string, overwrite: boolean): Promise<string> {
          return await this.items.getFileContent(vaultId, itemQuery, fileId, targetDirectory, overwrite);
    }
  • Add a test for the new function in __test__/op-connect.test.ts. This may be a tricky one.
    test("downloadFile", async () => {
        // actual test here
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions