2018-01-16 18:41:10 +01:00
|
|
|
//
|
|
|
|
// Copyright (c) 2018, Joyent, Inc. All rights reserved.
|
|
|
|
//
|
|
|
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
//
|
|
|
|
|
2017-10-09 13:46:54 +02:00
|
|
|
package storage
|
|
|
|
|
|
|
|
import (
|
2018-03-13 11:10:41 +01:00
|
|
|
"net/http"
|
|
|
|
|
2017-10-09 13:46:54 +02:00
|
|
|
triton "github.com/joyent/triton-go"
|
|
|
|
"github.com/joyent/triton-go/client"
|
|
|
|
)
|
|
|
|
|
|
|
|
type StorageClient struct {
|
|
|
|
Client *client.Client
|
|
|
|
}
|
|
|
|
|
|
|
|
func newStorageClient(client *client.Client) *StorageClient {
|
|
|
|
return &StorageClient{
|
|
|
|
Client: client,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewClient returns a new client for working with Storage endpoints and
|
|
|
|
// resources within CloudAPI
|
|
|
|
func NewClient(config *triton.ClientConfig) (*StorageClient, error) {
|
|
|
|
// TODO: Utilize config interface within the function itself
|
|
|
|
client, err := client.New(config.TritonURL, config.MantaURL, config.AccountName, config.Signers...)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return newStorageClient(client), nil
|
|
|
|
}
|
|
|
|
|
2018-03-13 11:10:41 +01:00
|
|
|
// SetHeader allows a consumer of the current client to set a custom header for
|
|
|
|
// the next backend HTTP request sent to CloudAPI.
|
|
|
|
func (c *StorageClient) SetHeader(header *http.Header) {
|
|
|
|
c.Client.RequestHeader = header
|
|
|
|
}
|
|
|
|
|
2017-10-09 13:46:54 +02:00
|
|
|
// Dir returns a DirectoryClient used for accessing functions pertaining to
|
|
|
|
// Directories functionality of the Manta API.
|
|
|
|
func (c *StorageClient) Dir() *DirectoryClient {
|
|
|
|
return &DirectoryClient{c.Client}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Jobs returns a JobClient used for accessing functions pertaining to Jobs
|
|
|
|
// functionality of the Triton Object Storage API.
|
|
|
|
func (c *StorageClient) Jobs() *JobClient {
|
|
|
|
return &JobClient{c.Client}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Objects returns an ObjectsClient used for accessing functions pertaining to
|
|
|
|
// Objects functionality of the Triton Object Storage API.
|
|
|
|
func (c *StorageClient) Objects() *ObjectsClient {
|
|
|
|
return &ObjectsClient{c.Client}
|
|
|
|
}
|
|
|
|
|
|
|
|
// SnapLinks returns an SnapLinksClient used for accessing functions pertaining to
|
|
|
|
// SnapLinks functionality of the Triton Object Storage API.
|
|
|
|
func (c *StorageClient) SnapLinks() *SnapLinksClient {
|
|
|
|
return &SnapLinksClient{c.Client}
|
|
|
|
}
|