samvera / browse-everything

Rails engine providing access to files in cloud storage
Apache License 2.0
114 stars 22 forks source link

Which documentation (and test suites) need to be updated/added in order to add a new provider #197

Open jrochkind opened 6 years ago

jrochkind commented 6 years ago

Are there any docs or specs on what needs to be done to add a new provider, whether locally in my app or as a PR here?

jrgriffiniii commented 6 years ago

@jrochkind currently the only Wiki documentation available references configuration (https://github.com/samvera/browse-everything/wiki), and the README should be revised and updated.

Thank you for this question, and I can address these both as priorities.

jrochkind commented 6 years ago

Thanks, sorry, I'm not asking about configuration, I'm asking about actually writing new provider code for a new storage location not currently handled by BrowseEverything. In this case, I am considering egnyte, which is a provider my organization uses. Sorry if my question was confusing.

How would I best figure out how to write a new module for connecting to a new type of storage not preivously handled? Are there any docs on this, or a specification of what it must implement?

jrgriffiniii commented 6 years ago

Sorry if my question was confusing.

No apologies are needed, it was not...

Are there any docs on this, or a specification of what it must implement?

No, there are not, and I can look to provide these.

How would I best figure out how to write a new module for connecting to a new type of storage not preivously handled?

My approach has been to work exclusively off of https://github.com/samvera/browse-everything/blob/master/app/controllers/browse_everything_controller.rb and https://github.com/samvera/browse-everything/blob/master/lib/browse_everything/driver/base.rb.

BrowseEverything::Driver::Base provides an "interface". Configuration for anything requiring OAuth2 based authentication becomes a bit more complex given the degree to which browse-everything manages all data (codes, auth. tokens) in Rails Sessions using provider specific keys. This needs to be improved upon, but I have been focusing exclusively upon fixing Google Drive support recently.