-
Notifications
You must be signed in to change notification settings - Fork 88
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New storage provider: Google Cloud Storage #269
Conversation
Why this is marked as a draft: I'm not entirely sure what happened, but during development I suddenly started running into a strange problem with the Google API packages failing to load the proper version. The ol' I'm kinda stuck now, so I wonder if anyone can help me figure this one out. |
app.config is not used for assembly redirection. |
The 'using' keyword ended up disposing the memory stream before it was actually opened. Also, the stream had to be seeked to the start.
Directories don't actually exist in GCS; instead, object names include a slash-separated prefix. This commit includes changes that interpret this prefix into sub-directories in the KeeAnywhere browser.
Since we only really need the object name and last update date, we can request GCS to only send those and omit the rest of the data.
Thank you! That did the trick 😄 Please let me know if there are any further changes or fixes required. |
This PR adds Google Cloud Storage, Google's object storage solution (in their cloud platform), as a storage provider for KeeAnywhere.
I use GCS for my projects and would love to be able to use it for KeePass, so I figured I should chip-in and help make it happen! I tried my luck with the S3-compatible method first but it didn't seem to work, hence why I decided to just implement it 'natively'.
A few things to note about this implementation:
AccountConfiguration
.IAsyncEnumerable
for their async operations. This is fine since C# 5 supports it properly, but it did require a slightly uglier implementation since the 'luxury' of usingawait foreach
is only for C# 8 and above.I hope this will prove useful! Please let me know if there's anything you want me to add/change/remove.
😄