func (c Client) GetFileService() FileServiceClient {
	return FileServiceClient{c}
}
GetFileService returns a FileServiceClient which can operate on the file
service of the storage account.
package storage
import (
	"bytes"
	"encoding/base64"
	"encoding/xml"
	"errors"
	"fmt"
	"io"
	"io/ioutil"
	"net/http"
	"net/url"
	"regexp"
	"sort"
	"strconv"
	"strings"
)
const (
	DefaultBaseURL = "core.windows.net"
	DefaultAPIVersion = "2015-02-21"
	defaultUseHTTPS = true
	blobServiceName  = "blob"
	tableServiceName = "table"
	queueServiceName = "queue"
	fileServiceName  = "file"
)
type Client struct {
	HTTPClient *http.Client
	accountName string
	accountKey  []byte
	useHTTPS    bool
	baseURL     string
	apiVersion  string
}
type storageResponse struct {
	statusCode int
	headers    http.Header
	body       io.ReadCloser
}
type AzureStorageServiceError struct {
	Code                      string `xml:"Code"`
	Message                   string `xml:"Message"`
	AuthenticationErrorDetail string `xml:"AuthenticationErrorDetail"`
	QueryParameterName        string `xml:"QueryParameterName"`
	QueryParameterValue       string `xml:"QueryParameterValue"`
	Reason                    string `xml:"Reason"`
	StatusCode                int
	RequestID                 string
}
type UnexpectedStatusCodeError struct {
	allowed []int
	got     int
}
func (e UnexpectedStatusCodeError) Error() string {
	s := func(i int) string { return fmt.Sprintf("%d %s", i, http.StatusText(i)) }
	got := s(e.got)
	expected := []string{}
	for _, v := range e.allowed {
		expected = append(expected, s(v))
	}
	return fmt.Sprintf("storage: status code from service response is %s; was expecting %s", got, strings.Join(expected, " or "))
}
func (e UnexpectedStatusCodeError) Got() int {
	return e.got
}
func NewBasicClient(accountName, accountKey string) (Client, error) {
	return NewClient(accountName, accountKey, DefaultBaseURL, DefaultAPIVersion, defaultUseHTTPS)
}
func NewClient(accountName, accountKey, blobServiceBaseURL, apiVersion string, useHTTPS bool) (Client, error) {
	var c Client
	if accountName == "" {
		return c, fmt.Errorf("azure: account name required")
	} else if accountKey == "" {
		return c, fmt.Errorf("azure: account key required")
	} else if blobServiceBaseURL == "" {
		return c, fmt.Errorf("azure: base storage service url required")
	}
	key, err := base64.StdEncoding.DecodeString(accountKey)
	if err != nil {
		return c, err
	}
	return Client{
		accountName: accountName,
		accountKey:  key,
		useHTTPS:    useHTTPS,
		baseURL:     blobServiceBaseURL,
		apiVersion:  apiVersion,
	}, nil
}
func (c Client) getBaseURL(service string) string {
	scheme := "http"
	if c.useHTTPS {
		scheme = "https"
	}
	host := fmt.Sprintf("%s.%s.%s", c.accountName, service, c.baseURL)
	u := &url.URL{
		Scheme: scheme,
		Host:   host}
	return u.String()
}
func (c Client) getEndpoint(service, path string, params url.Values) string {
	u, err := url.Parse(c.getBaseURL(service))
	if err != nil {
		panic(err)
	}
	if path == "" {
		path = "/"  
	}
	u.Path = path
	u.RawQuery = params.Encode()
	return u.String()
}
func (c Client) GetBlobService() BlobStorageClient {
	return BlobStorageClient{c}
}
func (c Client) GetQueueService() QueueServiceClient {
	return QueueServiceClient{c}
}