{"id":15662561,"url":"https://github.com/tombuildsstuff/giovanni","last_synced_at":"2025-05-16T18:08:20.996Z","repository":{"id":41837712,"uuid":"194905882","full_name":"tombuildsstuff/giovanni","owner":"tombuildsstuff","description":"An alternative Azure Storage SDK for Go","archived":false,"fork":false,"pushed_at":"2024-12-11T23:55:56.000Z","size":857,"stargazers_count":18,"open_issues_count":10,"forks_count":20,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-03T18:14:24.836Z","etag":null,"topics":["azure","azure-storage","azure-storage-blob","azure-storage-file","azure-storage-queue","azure-storage-table"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tombuildsstuff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-02T17:18:08.000Z","updated_at":"2024-11-21T14:51:22.000Z","dependencies_parsed_at":"2022-08-11T19:01:25.607Z","dependency_job_id":"272ea627-2da2-4765-9ecf-62be35130a5d","html_url":"https://github.com/tombuildsstuff/giovanni","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tombuildsstuff%2Fgiovanni","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tombuildsstuff%2Fgiovanni/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tombuildsstuff%2Fgiovanni/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tombuildsstuff%2Fgiovanni/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tombuildsstuff","download_url":"https://codeload.github.com/tombuildsstuff/giovanni/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248601063,"owners_count":21131607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","azure-storage","azure-storage-blob","azure-storage-file","azure-storage-queue","azure-storage-table"],"created_at":"2024-10-03T13:33:17.080Z","updated_at":"2025-04-12T16:47:57.675Z","avatar_url":"https://github.com/tombuildsstuff.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Giovanni\n\nAn alternative Azure Storage SDK for Go\n\n---\n\nThis repository is an alternative Azure Storage SDK for Go; which supports for:\n\n- The [Blob Storage APIs](https://docs.microsoft.com/en-us/rest/api/storageservices/blob-service-rest-api)\n- The [DataLakeStorage Gen2 APIs](https://docs.microsoft.com/en-us/rest/api/storageservices/data-lake-storage-gen2)\n- The [File Storage APIs](https://docs.microsoft.com/en-us/rest/api/storageservices/file-service-rest-api)\n- The [Queue Storage APIs](https://docs.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api)\n- The [Table Storage APIs](https://docs.microsoft.com/en-us/rest/api/storageservices/table-service-rest-api)\n\nAt this time we support the following API Versions:\n\n* `2020-08-04` (`./storage/2020-08-04`)\n\nWe're also open to supporting other versions of the Azure Storage APIs as necessary.\n\nDocumentation for how to use each SDK can be found within the README for that SDK version - for example [here's the README for 2020-08-04](storage/2020-08-04/README.md).\n\nEach Package also contains Unit and Acceptance tests to ensure that the functionality works; instructions on how to run the tests can be found below.\n\n## Mission Statement\n\nFundamentally: developers should be able to pick which version of the Azure API they target using this SDK.\n\nAs such, there's two main goals here:\n\n* New API Versions will be added additively to the `storage` folder.\n\n* Any supported API Versions will continue to exist in the `storage` folder until they're EOL'd/stop working.\n\nTo ensure that each of these scenarios is possible - we have Acceptance and Unit Tests to confirm that the functionality in these versions works - and will use SemVer as appropriate.\n\n## Future Enhancements\n\nAt this time this SDK is mostly feature complete, with a couple of notable additions (since we didn't need them).\n\nWhilst it's possible to create Snapshots (for example, of a Container) - at this time most SDK calls don't support specifying the optional query-string value for `snapshot`.\n\nIn addition, we also don't support the `timeout` querystring on every API call; this is because instead all SDK methods take a `context` object, which allows a timeout to be set (albeit on the Client rather than the Remote API Call).\n\nIn both instances this is because we didn't need this functionality for our use-cases - but feel free to send a PR if you need this.\n\n## Licence\n\nApache 2.0\n\n## Technical Implementation\n\nThis SDK currently makes use of the standard Preparer-Sender-Responder pattern found in [Azure/go-autorest](https://github.com/Azure/go-autorest) - which means that this SDK should be familiar and compatible with [the Azure SDK for Go](https://github.com/Azure/azure-sdk-for-go).\n\n\u003e Note: A future release of this repository will switch to using `hashicorp/go-azure-sdk` as a base layer, rather than `Azure/go-autorest` - [see this issue for more information](https://github.com/tombuildsstuff/giovanni/issues/68).\n\nDepending on the API Version / API being used - different authentication mechanisms are possible (see the README within the specific SDK for more info ([example](storage/2020-08-04/blob/accounts/README.md)). In all cases one of the following Authorizers will be required:\n\n* An Authorizer for Azure Active Directory\n* A SharedKeyLite Authorizer (for Blob, Queue and Table Storage)\n* A SharedKeyLite Authorizer (for Table Storage)\n\nExamples for all of these can be found below in [the Examples Directory](examples/).\n\nA [SharedKey and SharedKeyLite Authorizer can be found in `Azure/go-autorest`](https://github.com/Azure/go-autorest/blob/ee71315119d4d7088d74ca9fcbc7301ce2ed2bc1/autorest/authorization_storage.go#L30-L48).\n\n---\n\n\u003e Note: A future release of this repository will switch to using `hashicorp/go-azure-sdk` as a base layer, rather than `Azure/go-autorest` - [see this issue for more information](https://github.com/tombuildsstuff/giovanni/issues/68).\n\n## Running the Tests\n\nEach package contains both Unit and Acceptance Tests which provision a real Storage Account on Azure, and then run tests against that.\n\nTo run those, the following Environment Variables need to be set:\n\n* `ARM_TENANT_ID` - The ID of the Tenant where tests should be run, such as `00000000-0000-0000-0000-000000000000`.\n* `ARM_SUBSCRIPTION_ID` - The ID of the Subscription where tests should be run, such as `00000000-0000-0000-0000-000000000000`.\n* `ARM_CLIENT_ID` - The ID of the AzureAD Application (also known as a Client ID), such as `00000000-0000-0000-0000-000000000000`.\n* `ARM_CLIENT_SECRET` - The Client Secret/Password for a Service Principal where tests should be run.\n* `ARM_ENVIRONMENT` - The name of the Azure Environment where the tests should be run, such as `Public` or `Germany`.\n* `ARM_TEST_LOCATION` - The name of the Azure Region where resources provisioned by the tests should be created, such as `West Europe`.\n* `ACCTEST` - confirms that you want the tests to be run, set this to any value.\n\nOnce those Environment Variables are set - you should be able to run:\n\n```bash\n$ ACCTEST=1 go test -v ./storage/...\n```\n\nYou can also run them for a specific API version by running:\n\n```bash\n$ ACCTEST=1 go test -v ./storage/2020-08-04/...\n```\n\n## Debugging\n\nYou can see the Requests/Responses from this SDK by setting the Environment Variable `TEST_LOG` to any value.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftombuildsstuff%2Fgiovanni","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftombuildsstuff%2Fgiovanni","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftombuildsstuff%2Fgiovanni/lists"}