.. | ||
appendblob.go | ||
authorization.go | ||
blob.go | ||
blobsasuri.go | ||
blobserviceclient.go | ||
blockblob.go | ||
client.go | ||
commonsasuri.go | ||
container.go | ||
copyblob.go | ||
directory.go | ||
entity.go | ||
file.go | ||
fileserviceclient.go | ||
leaseblob.go | ||
message.go | ||
odata.go | ||
pageblob.go | ||
queue.go | ||
queuesasuri.go | ||
queueserviceclient.go | ||
README.md | ||
share.go | ||
storagepolicy.go | ||
storageservice.go | ||
table.go | ||
table_batch.go | ||
tableserviceclient.go | ||
util.go | ||
version.go |
Azure Storage SDK for Go
The github.com/Azure/azure-sdk-for-go/storage
package is used to perform REST operations against the Azure Storage Service. To manage your storage accounts (Azure Resource Manager / ARM), use the github.com/Azure/azure-sdk-for-go/arm/storage package. For your classic storage accounts (Azure Service Management / ASM), use github.com/Azure/azure-sdk-for-go/management/storageservice package.
This package includes support for Azure Storage Emulator.
Getting Started
- Go get the SDK
go get -u github.com/Azure/azure-sdk-for-go/storage
- If you don't already have one, create a Storage Account.
- Take note of your Azure Storage Account Name and Azure Storage Account Key. They'll both be necessary for using this library.
- This option is production ready, but can also be used for development.
- (Optional, Windows only) Download and start the Azure Storage Emulator.
- Checkout our existing samples.
Contributing
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
When contributing, please conform to the following practices:
- Run gofmt to use standard go formatting.
- Run golint to conform to standard naming conventions.
- Run go vet to catch common Go mistakes.
- Use GoASTScanner/gas to ensure there are no common security violations in your contribution.
- Run go test to catch possible bugs in the code:
go test ./storage/...
.- This project uses HTTP recordings for testing.
- The recorder should be attached to the client before calling the functions to test and later stopped.
- If you updated an existing test, its recording might need to be updated. Run
go test ./storage/... -ow -check.f TestName
to rerecord the test. - Important note: all HTTP requests in the recording must be unique: different bodies, headers (
User-Agent
,Authorization
andDate
orx-ms-date
headers are ignored), URLs and methods. As opposed to the example above, the following test is not suitable for recording:
func (s *StorageQueueSuite) TestQueueExists(c *chk.C) {
cli := getQueueClient(c)
rec := cli.client.appendRecorder(c)
defer rec.Stop()
queue := cli.GetQueueReference(queueName(c))
ok, err := queue.Exists()
c.Assert(err, chk.IsNil)
c.Assert(ok, chk.Equals, false)
c.Assert(queue.Create(nil), chk.IsNil)
defer queue.Delete(nil)
ok, err = queue.Exists() // This is the very same request as the one 5 lines above
// The test replayer gets confused and the test fails in the last line
c.Assert(err, chk.IsNil)
c.Assert(ok, chk.Equals, true)
}
- On the other side, this test does not repeat requests: the URLs are different.
func (s *StorageQueueSuite) TestQueueExists(c *chk.C) {
cli := getQueueClient(c)
rec := cli.client.appendRecorder(c)
defer rec.Stop()
queue1 := cli.GetQueueReference(queueName(c, "nonexistent"))
ok, err := queue1.Exists()
c.Assert(err, chk.IsNil)
c.Assert(ok, chk.Equals, false)
queue2 := cli.GetQueueReference(queueName(c, "exisiting"))
c.Assert(queue2.Create(nil), chk.IsNil)
defer queue2.Delete(nil)
ok, err = queue2.Exists()
c.Assert(err, chk.IsNil)
c.Assert(ok, chk.Equals, true)
}