This guide is intended to assist in the migration from the azure-storage-file-go
module to the latest releases of the azfile
module.
The redesign of the azfile
module separates clients into various sub-packages.
In previous versions, the public surface area was "flat", so all clients and supporting types were in the azfile
package.
This made it difficult to navigate the public surface area.
In azure-storage-file-go
a client constructor always requires a url.URL
and Pipeline
parameters.
In azfile
a client constructor always requires a string
URL, any specified credential type, and a *ClientOptions
for optional values. You pass nil
to accept default options.
// new code to create service client using shared key credential
client, err := service.NewClientWithSharedKeyCredential("<my storage account URL>", sharedKeyCred, nil)
In azure-storage-file-go
you created a Pipeline
with the required credential type. This pipeline was then passed to the client constructor.
In azfile
, you pass the required credential directly to the client constructor.
// new code. cred is a shared key credential created from NewSharedKeyCredential method in service package
client, err := service.NewClientWithSharedKeyCredential("<my storage account URL>", cred, nil)
Authentication with a shared key via NewSharedKeyCredential
remains unchanged.
In azure-storage-file-go
you created a Pipeline
with NewAnonymousCredential
to support anonymous or SAS authentication.
In azfile
you use the constructor NewClientWithNoCredential()
instead.
// new code to create a file client using SAS
client, err := file.NewClientWithNoCredential("<public file or file with SAS URL>", nil)
In azure-storage-file-go
you explicitly created a Marker
type that was used to page over results (example).
In azfile
, operations that return paginated values return a *runtime.Pager[T]
.
// new code to iterate a directory
dirClient, err := directory.NewClientWithSharedKeyCredential("<directory URL>", cred, options)
// TODO: handle err
pager := dirClient.NewListFilesAndDirectoriesPager(nil)
for pager.More() {
page, err := pager.NextPage(context.TODO())
// process results
}
In azure-storage-file-go
you explicitly created a HTTP pipeline with configuration before creating a client.
This pipeline instance was then passed as an argument to the client constructor (example).
In azfile
a HTTP pipeline is created during client construction. The pipeline is configured through the azcore.ClientOptions
type.
// new code
client, err := service.NewClientWithSharedKeyCredential("<my storage account URL>", cred, &service.ClientOptions{
ClientOptions: azcore.ClientOptions{
// configure HTTP pipeline options here
},
})