All Projects → Autodesk-Forge → bim360appstore-data.management-nodejs-transfer.storage

Autodesk-Forge / bim360appstore-data.management-nodejs-transfer.storage

Licence: MIT license
Autodesk design file transfer app: Transfers files from Autodesk (BIM 360, Fusion 360) to other Storages (Dropbox, Box, Onedrive, Google Drive, Egnyte)

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
CSS
56736 projects

Projects that are alternatives of or similar to bim360appstore-data.management-nodejs-transfer.storage

Rclone
"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files
Stars: ✭ 30,541 (+108975%)
Mutual labels:  dropbox, onedrive, google-drive
Cloudcross
CloudCross it's opensource crossplatform software for syncronization a local files and folders with many cloud providers. On this moment a Cloud Mail.Ru, Yandex.Disk, Google drive, OneDrive and Dropbox support is available
Stars: ✭ 185 (+560.71%)
Mutual labels:  dropbox, onedrive, google-drive
libcloudstorage
Official libcloudstorage repository.
Stars: ✭ 49 (+75%)
Mutual labels:  dropbox, onedrive, box
Ytdlrc
☁️ Downloads videos and metadata with youtube-dl and moves each file on completion to an rclone remote
Stars: ✭ 140 (+400%)
Mutual labels:  dropbox, google-drive, box
ccViewer
CryptCloudViewer source codes
Stars: ✭ 66 (+135.71%)
Mutual labels:  dropbox, onedrive, google-drive
Cyberduck
Cyberduck is a libre FTP, SFTP, WebDAV, Amazon S3, Backblaze B2, Microsoft Azure & OneDrive and OpenStack Swift file transfer client for Mac and Windows.
Stars: ✭ 1,080 (+3757.14%)
Mutual labels:  dropbox, onedrive, google-drive
Joplin
Joplin - an open source note taking and to-do application with synchronization capabilities for Windows, macOS, Linux, Android and iOS. Forum: https://discourse.joplinapp.org/
Stars: ✭ 26,916 (+96028.57%)
Mutual labels:  dropbox, onedrive
rclone-drive
☁️Simple web cloud storage based on rclone, transform cloud storage (s3, google drive, one drive, dropbox) into own custom web-based storage
Stars: ✭ 30 (+7.14%)
Mutual labels:  dropbox, google-drive
Fileprovider
FileManager replacement for Local, iCloud and Remote (WebDAV/FTP/Dropbox/OneDrive) files -- Swift
Stars: ✭ 724 (+2485.71%)
Mutual labels:  dropbox, onedrive
Aria2.conf
Aria2 配置文件 | OneDrive & Google Drvive 离线下载 | 百度网盘转存
Stars: ✭ 1,321 (+4617.86%)
Mutual labels:  onedrive, google-drive
Elodie
An EXIF-based photo assistant, organizer, manager and workflow automation tool.
Stars: ✭ 840 (+2900%)
Mutual labels:  dropbox, google-drive
Importexportfree
Improve default Magento 2 Import / Export features - cron jobs, CSV , XML , JSON , Excel , mapping of any format, Google Sheet, data and price modification, improved speed and a lot more!
Stars: ✭ 160 (+471.43%)
Mutual labels:  dropbox, google-drive
Filestash
🦄 A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ...
Stars: ✭ 5,231 (+18582.14%)
Mutual labels:  dropbox, google-drive
Stackedit
In-browser Markdown editor
Stars: ✭ 18,744 (+66842.86%)
Mutual labels:  dropbox, google-drive
backmeup
BackMeUp: An automated MySQL / MariaDB databases and files backup solution on *nix Machines using Amazon S3, WebDAV (ownCloud / NextCloud etc.), Google Drive and Dropbox.
Stars: ✭ 80 (+185.71%)
Mutual labels:  dropbox, google-drive
screentray-distribution
macOS app for capturing, annotating and sharing screenshots
Stars: ✭ 28 (+0%)
Mutual labels:  dropbox, google-drive
Packtpub Crawler
Download your daily free Packt Publishing eBook https://www.packtpub.com/packt/offers/free-learning
Stars: ✭ 717 (+2460.71%)
Mutual labels:  onedrive, google-drive
Drivebackupv2
Uploads Minecraft backups to Google Drive/OneDrive or by (S)FTP
Stars: ✭ 26 (-7.14%)
Mutual labels:  onedrive, google-drive
butdr
Backup to Cloud( Google Drive, Dropbox ... ) use rclone
Stars: ✭ 49 (+75%)
Mutual labels:  dropbox, onedrive
go-drive
A simple cloud drive mapping web app supports local, FTP/SFTP, S3, OneDrive, WebDAV, Google Drive.
Stars: ✭ 184 (+557.14%)
Mutual labels:  onedrive, google-drive

bim360appstore-data.management-nodejs-transfer.storage

Node.js npm Platforms License

OAuth2 Data-Management

This sample application demonstrate how to transfer files from BIM 360 Docs, BIM 360 Team (formerly A360) and Fusion 360 to a series of storages: Box, Egnyte, Google Drive, OneDrive and Dropbox. It uses Forge Data Management API. As of now, BIM 360 Field and Glue are NOT supported. The front-end will look like (e.g. Google Drive):

Thumbnail

thumbnail

Demonstration

See video demonstration

Usage: select folders or files (or specific version) on Autodesk side (left), select one folder on storage side (right). Click on the right-pointing-arrow (at the center) to start transferring. The opposite is also supported, use the left-pointing-arrow. When transferring from storage to Autodesk, a new version is created if file name already exists.

Architecture

The app was designed to communicate with Autodesk and respective storage to prepare the transfer. Once the source and destination requests are ready, it delegates to AWS Lambda. The following image describes the steps to transfer from Autodesk to storage.

The next image describes the inverse flow, from storage to Autodesk. See Setup and AWS Gateway & AWS Lambda sections for deployment details. This blog post include more details.

Setup

This samples requires Forge and respective storage credentials.

Forge

For using this sample, you need an Autodesk developer credentials. Visit the Forge Developer Portal, sign up for an account, then create an app. For this new app, use https://localhost:3000/api/forge/callback/oauth as Callback URL. Finally take note of the Client ID and Client Secret. For localhost testing:

  • FORGE_CLIENT_ID
  • FORGE_CLIENT_SECRET
  • FORGE_CALLBACK_URL (optional on localhost)

Storage

Define the storage that this sample will run:

  • STORAGE_NAME (can be: Box, Egnyte, Google, OneDrive, Dropbox). This variable defines from which folder to load the server-side files: oauth, tree and integration (see /server/storage/ folder).

For each storage, define the following variables:

  • STORAGE_CLIENT_ID
  • STORAGE_CLIENT_SECRET
  • STORAGE_CALLBACK_URL: optional on localhost, on the respective dev portal should be https://localhost:3000/api/[STORAGE_NAME]/callback/oauth

The following topics describe the steps to generate the respective client ID and client secret for each storage provider:

Box

  • STORAGE_NAME: box

Visit the Box Developer, Log in or Sign up, follow the steps to Create a Box Application. For this new app, use https://localhost:3000/api/box/callback/oauth as redirect_uri. Finally, take note of the client_id and client_secret, which you'll need to use as STORAGE_CLIENT_ID and STORAGE_CLIENT_SECRET respectively.

Dropbox

  • STORAGE_NAME: dropbox

Visit the Dropbox Developer site, Log in or Sign up, follow the steps to Create your app. For this new app, use https://localhost:3000/api/dropbox/callback/oauth as one of the Redirect URIs. Take note of the App key and App secret, which you'll need to use as STORAGE_CLIENT_ID and STORAGE_CLIENT_SECRET respectively.

Egnyte

  • STORAGE_NAME: egnyte

Visit the Egnyte Developer site, Log in or Sign up, follow the steps to Create a New Application. For this new app, use https://localhost:3000/api/egnyte/callback/oauth as Registered OAuth Redirect URI. Finally, take note of the Application's Key and Shared Secret, which you'll need to use as STORAGE_CLIENT_ID and STORAGE_CLIENT_SECRET respectively.

Additionally, Egnyte needs an account name:

  • STORAGE_NEEDS_ACCOUNT_NAME: some storage services like Egnyte require an account name which will be part of the URL of the API endpoints. If the storage service you are working with does not require it then you can either omit this parameter or set its value to false

Google Drive

  • STORAGE_NAME: google

Visit the Google APIs Console, Log in or Sign up, follow the steps to Create a Credential. For this new app, use https://localhost:3000/api/google/callback/oauth as redirect_uri. Make sure you activate Google Drive & Google People APIs, this sample uses both scopes. Finally, take note of the client_id and client_secret, which you'll need to use as STORAGE_CLIENT_ID and STORAGE_CLIENT_SECRET respectively.

OneDrive

  • STORAGE_NAME: onedrive

Visit the OneDrive Dev Center, Log in or Sign up, follow the steps to Add an app. For this new app, add a Web platform and use https://localhost:3000/api/onedrive/callback/oauth as one of the Redirect URLs. Take note of the Application Id and Application Secrets >> Password, which you'll need to use as STORAGE_CLIENT_ID and STORAGE_CLIENT_SECRET respectively.

Running locally

Make sure to have NodeJS installed. Clone this project or download it. It's recommended to install GitHub desktop. To clone it via command line, use the following (Terminal on MacOSX/Linux, Git Shell on Windows):

git clone https://github.com/autodesk-forge/bim360appstore-data.management-nodejs-transfer.storage

Set all FORGE_ and STORAGE_ environment variables described on the Setup section using the following:

  • Mac OSX/Linux (Terminal)
export VARIABLE_NAME=value
  • Windows (use Node.js command line from Start menu)
set VARIABLE_NAME=value

Install the required packaged and run the application:

npm install
npm run dev

Open the browser with SSL on https://localhost:3000

Important: do not use npm start locally, this is intended for PRODUCTION only with HTTPS (SSL) secure cookies.

Deployment

A deployment should have the following environment variables defined (e.g. Heroku app settings):

Deploy on Heroku

To deploy this application to Heroku, the Callback URL for Forge and Storage must use your .herokuapp.com address. After clicking on the button below, at the Heroku Create New App page, set your Client ID, Secret and Callback URL for Forge and respective storage.

Deploy

Watch this video on how deploy samples to Heroku.

OAuth Redirect URLs

On live applications, the Forge and respective storage callback URLs should use your application address instead of localhost:3000, something like https://serveraddress.com/api/[FORGE or STORAGE_NAME]/callback/oauth

AWS Gateway & AWS Lambda

This sample delegates the heavy work of transferring files to a AWS Lambda. See this blog post for more information. To deploy it, ZIP the contents of /server/lambda/ and upload to a Lambda function. See this step-by-step setup. Then create an API Gateway. The following environment variables should be adjusted:

  • TRANSFER_ENDPOINT: the AWS API Gateway address
  • TRANSFER_ENDPOINT_AUTHORIZATION: the x-api-key for the API Gateway

When the job is complete, the lambda function need to notify the application. This will not work on localhost (as AWS cannot call localhost, except with a proxy app). Define the following environment variable:

  • TRANSFER_CALLBACK_URL: e.g.: https://serveradress/api/app/callback/transferStatus

No need to define any environment variable on AWS Lambda. A single API Gateway can be shared for multiple instances of this app.

Usage statistics

This sample can keep records all users (Name, email, first usage date) and which storages used. To setup, create a MongoDB instance (e.g. on mLab) with a users collection. Define the following environment variables:

  • MONGO_STATS: connection string and store as enviroment variable. For mLab, it should look like: mongodb://username:[email protected]:5678/databaseName

Usage report (ToDo)

Known issues

The AWS Lambda function have an exception for Box Upload, which requires multipart post. This require a future improvement.

Tips & tricks

For local development/testing, consider use nodemon package, which auto restart your node application after any modification on your code. To install it, use:

sudo npm install -g nodemon

Then, instead of npm run dev, use the following:

npm run nodemon

Which executes nodemon server.js --ignore www/, where the --ignore parameter indicates that the app should not restart if files under www folder are modified.

Troubleshooting

After installing Github desktop for Windows, on the Git Shell, if you see a error setting certificate verify locations error, use the following:

git config --global http.sslverify "false"

License

This sample is licensed under the terms of the MIT License. Please see the LICENSE file for full details.

Authors

Forge Partner Development Team

See more at Forge blog.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].