Skip to content
This repository has been archived by the owner on Jan 6, 2023. It is now read-only.

How to implement storage adapters other than S3 #2017

Open
benhaynes opened this issue Oct 25, 2018 · 11 comments
Open

How to implement storage adapters other than S3 #2017

benhaynes opened this issue Oct 25, 2018 · 11 comments
Labels

Comments

@benhaynes
Copy link
Sponsor Member

From directus created by michchan : directus/directus#2087

The documentation (6.4.0) just mentioned how to implement S3
but is there any guide to implement others, say dropbox, one drive etc.?

@wellingguzman
Copy link
Contributor

Not possible at the moment.

Ref: #61

There's a pull request that seems to allow custom adapter based on the Flysystem adapter interface. (https://github.com/directus/api/pull/603/files).

@benhaynes
Copy link
Sponsor Member Author

Ref: #620

@goappycodes
Copy link

I am looking to connect Dropbox on my Directus v7 install (latest version).

Seems this was allowed in v6 - https://github.com/directus/docs-6-legacy/blob/master/administrator-guide/storage-adapters.md

And as mentioned by @wellingguzman - there is a pull request here - https://github.com/directus/api/pull/603/files --> Has anyone tried this and got it to work?

Just wondering if there is any "officially" supported method for implementing Dropbox?

@benhaynes
Copy link
Sponsor Member Author

@bjgajjar — any thoughts on this? It would be great to have more Official Storage adapters... and to update the docs on how these can be created.

@hakkurishian
Copy link

@benhaynes I'm also at the point where I want to write my own storage adapter (and of course share it if useful) - in this case to cloudinary. Did anyone try the pull request mentioned by @swatiag1101 ?

@hemratna
Copy link
Contributor

Hi @benhaynes, API is using FlySystem for file management.

So We can easily integrate other adapters supported by FlySystem.

@hemratna
Copy link
Contributor

Hi @hakkurishian, This my help you. https://github.com/enl/flysystem-cloudinary

@hakkurishian
Copy link

@hemratna Thanks a lot! I remember seeing that in a previous documentation version of directus, e.g. how to integrate a custom provider with flysystem. However now I'm not sure where to place my adapter and where to obtain a template for it.

@benhaynes
Copy link
Sponsor Member Author

benhaynes commented Jul 29, 2019

Thanks @hemratna — can you add some more info to the Docs on how to create different Flysystem storage adapters? eg: where to add files, etc

https://docs.directus.io/extensions/storage-adapters.html#core-adapters

@benhaynes
Copy link
Sponsor Member Author

Also, this seems like a similar issue:

https://stackoverflow.com/questions/57201545/how-to-create-a-page-extension-in-directus-7

A user doesn't know where to put the files for their extension. Let's make sure that the Docs are clear on all of this information.

@hakkurishian
Copy link

@benhaynes see. my latest comment on the similar issue directus/docs#148. A revised overview of paths and templates (in addition to the examples) would for sure benefit beginners like me.

@rijkvanzanten rijkvanzanten transferred this issue from another repository Nov 18, 2020
cacly pushed a commit to GoldenArtistColors/DirectusAPI that referenced this issue Oct 13, 2021
* Issue Fix directus#1180 (directus#1183)

* Issue fix directus#1191 (directus#1192)

* Issue fix directus#1196 (directus#1197)

* Add 2fa authentication (directus#1031)

* Parent + Nested validation changes (directus#1138)

* Add migration schema for 2FA Secret user field

* Add 2fa_secret field to FieldsSeeder

* Create Missing 2FA Password Exception

* Add googleauthenticator dependency

* Add getter for User's 2FA secret

* Check for otp param in login request, and login with it

* Add enforce_2fa parameter to directus_settings

* Create Utils endpoint and service method to generate 2fa secret

* Add enforce_2fa field to roles

* Add enforce_2fa field to FieldsSeeder

* Change Missing2FAPasswordException error code to 111

* Change 2FA Library

* Change 2fa_secret interface in FieldsSeeder

* Created exception for invalid otp

* Changed findUserWithCredentials to through an InvalidOTPException on otp check

* Created new exception if 2fa is enforced but not enabled by user

* Added function to check if 2fa is enforced for a user

* Check in AuthenticationMiddleware whether 2fa is enforced and enabled for user

* Add optional needs2FA field to auth token and on token refresh

* Catch error if enforce_2fa column doesn't exist
Fixes crash when has2FAEnforced is called on a DB that hasn't been migrated

* Use relative positions for target path array to check user edit

* Fix unset on payload_arr instead of payload

* Change 2FA activation on login to use activate2FA endpoint

* Update ItemsService.php

* Issue Fix directus#1194 (directus#1195)

* Issue Fix directus#1194

* Update comment

* Valildation issue of O2M/M2O at insertion (directus#1198)

* Fox directus#1201 (directus#1202)

* Fix directus#1203 (directus#1204)

* Update collections() method in types.php (directus#1184)

There are cases when $type is not a string but an object that inherits from ObjectType.
In that situation array_key_exists failing because it should get only integers or strings 
as a first parameter. So in order to avoid that the 'name' property of the object is used 
as a key.

* Improve YouTube Embed Provider (directus#1210)

Adds in detection and parsing for youtu.be shorthand URLs.

* Add check for environment on bootstrap (directus#1215)

* Fix directus#1186 [Create new error code for invalid login entity] (directus#1218)

* Fix directus#1217 (Changing password over the CLI doesn't work) (directus#1220)

* Feature/audio video upload (directus#1214)

* added file meta data for audio/video

* updates as per PR feedback

* Fix directus#1207 [Permission denied issue  when using translation interface] (directus#1221)

* Fix for smtp send mail issue directus#1205 (directus#1223)

* Fix for smtp send mail issue directus#1205

Missing additional config settings
directus#1205

* Update Schema.php

* Fix 1232[Auth token is not refreshed] (directus#1233)

* Change Authencation Error code to 114 from 109 (directus#1231)

* Fix issue while update item. (directus#1224)

* directus#1227 : Ignore all the alias fields except file interface (directus#1240)

* Fix directus#1224 [Deletion of m2o/o2m field error for enabled cache] (directus#1241)

* Fix 845 (directus#1244)

* Change namespace for PHPUnit.

* Removing old tests.

* Fix directus#1238 [PDF support for Embedded URL] (directus#1245)

* Fix directus#1238[PDF support for Embedded URL]

* Add array support

* Update comment

* Update Files.php

* Fix directus#1243[Dynamic charset for DB] (directus#1246)

* Fix directus#1249[saveData: height is set to width] (directus#1251)

* Fix directus#2017[Renaming `Public` role gives `unauthorized` error on API calls] (directus#1253)

* Revert "Fix directus#2017[Renaming `Public` role gives `unauthorized` error on API calls] (directus#1253)" (directus#1254)

This reverts commit 7fe9056.

* FIX/core/Directus/Files.php: return $height instead of $width (directus#1250)

* Fix directus#1255 [Add support of batch Create/Update/Delete for user] (directus#1257)

* Fix directus#1255 [Support batch create/update/delete for user]

* Add exception

* Fix directus/app#2017 (directus#1256)

* Fix directus#2017[Renaming `Public` role gives `unauthorized` error on API calls]

* src

* Remove unwanted file from use

* Fix directus#729 [Can't properly query nested fields on Files field] (directus#1260)

* directus#1216 : Solved issue in O2M relationship of table itself (directus#1259)

* Fix directus#1209 [M2M relation with directus_collections cant be saved] (directus#1261)

* Fix directus#1209[M2M relation with directus_collections cant be saved]

* Implement condition on update

* Define variable

* Fix directus#1209[M2M relation with directus_collections cant be saved]

* 🙆🏻‍♂️

* Fix directus#1266 (directus#1267)

* Fix Warning:  Cannot use a scalar value as an array in /src/core/Directus/Config/StatusMapping.php on line 103 (directus#1268)

* Fix Notice: Undefined variable: filterFields in src/core/Directus/Database/TableGateway/RelationalTableGateway.php on line 2125 (directus#1270)

* Fix  directus#1237 (directus#1265)

* Project name fix (directus#1272)

* Adds support for environment variables in CLI (directus#1276)

* Cleans up some unused/deprecated files in the repository (directus#1277)

* Fix directus#1248 [API cannot go into deeper on user data] (directus#1282)

* Add proper exit codes for CLI (directus#1281)

* Fix cache.enabled not respected in cache service (directus#1273)

This fixes an issue where cache.enabled is false but caching is still working.

* Add CLI cache:clear (directus#1274)

* Fix directus#1284[Broken user related fields] (directus#1287)

* Fix directus#1279 [wysiwyg-full - add image - Call to a member function isOneToMany() on null] (directus#1288)

* fixed bug with incorrect height (directus#1293)

* Bump version
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

6 participants