Documentation ¶
Index ¶
- Constants
- func GetRoutes(ol HandlerHTTPapi) []api2.Route
- type API
- func (a *API) AttachSectors(ctx context.Context, req *AttachSectorsRequest) (*AttachSectorsResponse, error)
- func (a *API) Close() error
- func (a *API) DownloadWithToken(ctx context.Context, req *DownloadWithTokenRequest) (*DownloadWithTokenResponse, error)
- func (a *API) Health(ctx context.Context, req *HealthRequest) (*HealthResponse, error)
- func (a *API) ListSectorIDs(ctx context.Context, req *ListSectorIDsRequest) (*ListSectorIDsResponse, error)
- func (a *API) RemoveSectors(ctx context.Context, req *RemoveSectorsRequest) (*RemoveSectorsResponse, error)
- func (a *API) Start(ln net.Listener) (err error)
- func (a *API) TokenResources(ctx context.Context, req *TokenResourcesRequest) (*TokenResourcesResponse, error)
- func (a *API) UploadWithToken(ctx context.Context, req *UploadWithTokenRequest) (*UploadWithTokenResponse, error)
- type AttachSectorsError
- type AttachSectorsRequest
- type AttachSectorsResponse
- type Client
- func (c *Client) AttachSectors(ctx context.Context, req *AttachSectorsRequest) (res *AttachSectorsResponse, err error)
- func (c *Client) Close() error
- func (c *Client) DownloadAndVerify(ctx context.Context, req *DownloadWithTokenRequest) (*DownloadWithTokenResponse, error)
- func (c *Client) DownloadWithToken(ctx context.Context, req *DownloadWithTokenRequest) (res *DownloadWithTokenResponse, err error)
- func (c *Client) Health(ctx context.Context, req *HealthRequest) (res *HealthResponse, err error)
- func (c *Client) ListSectorIDs(ctx context.Context, req *ListSectorIDsRequest) (res *ListSectorIDsResponse, err error)
- func (c *Client) RemoveSectors(ctx context.Context, req *RemoveSectorsRequest) (res *RemoveSectorsResponse, err error)
- func (c *Client) TokenResources(ctx context.Context, req *TokenResourcesRequest) (res *TokenResourcesResponse, err error)
- func (c *Client) UploadWithToken(ctx context.Context, req *UploadWithTokenRequest) (res *UploadWithTokenResponse, err error)
- type DownloadWithTokenError
- type DownloadWithTokenRequest
- type DownloadWithTokenResponse
- type HandlerHTTPapi
- type HealthRequest
- type HealthResponse
- type Host
- type HostClienter
- type HostClienterConfig
- type ListSectorIDsRequest
- type ListSectorIDsResponse
- type Option
- type Range
- type RemoveSectorsRequest
- type RemoveSectorsResponse
- type Section
- type TokenAndSector
- type TokenRecord
- type TokenResourcesRequest
- type TokenResourcesResponse
- type TokenStorage
- type TokenStorageInfo
- type UploadWithTokenError
- type UploadWithTokenRequest
- type UploadWithTokenResponse
Constants ¶
const DefaultListSectorIDsLimit = 10000
DefaultListSectorIDsLimit limits range of results for sectorIDs listing.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type API ¶
type API struct {
// contains filtered or unexported fields
}
API represent host API.
func NewAPI ¶
func NewAPI(ts TokenStorage, hostSK crypto.SecretKey, host Host) *API
NewAPI return new host API.
func (*API) AttachSectors ¶
func (a *API) AttachSectors(ctx context.Context, req *AttachSectorsRequest) (*AttachSectorsResponse, error)
AttachSectors handler for /attach [POST] request.
func (*API) DownloadWithToken ¶
func (a *API) DownloadWithToken(ctx context.Context, req *DownloadWithTokenRequest) (*DownloadWithTokenResponse, error)
DownloadWithToken handler for /download [POST] request.
func (*API) Health ¶
func (a *API) Health(ctx context.Context, req *HealthRequest) (*HealthResponse, error)
Health is a handler for /health [GET] request.
func (*API) ListSectorIDs ¶
func (a *API) ListSectorIDs(ctx context.Context, req *ListSectorIDsRequest) (*ListSectorIDsResponse, error)
ListSectorIDs handler for /list-sector-ids [GET] request.
func (*API) RemoveSectors ¶
func (a *API) RemoveSectors(ctx context.Context, req *RemoveSectorsRequest) (*RemoveSectorsResponse, error)
RemoveSectors handler for /remove-sectors [POST] request.
func (*API) TokenResources ¶
func (a *API) TokenResources(ctx context.Context, req *TokenResourcesRequest) (*TokenResourcesResponse, error)
TokenResources handler for /resources [GET] request.
func (*API) UploadWithToken ¶
func (a *API) UploadWithToken(ctx context.Context, req *UploadWithTokenRequest) (*UploadWithTokenResponse, error)
UploadWithToken handler for /upload [POST] request.
type AttachSectorsError ¶
type AttachSectorsError struct { IncorrectBlock bool `json:"incorrect_block,omitempty"` NotEnoughStorage bool `json:"not_enough_storage,omitempty"` UnknownError string `json:"unknown_error,omitempty"` }
AttachSectorsError represent error message.
func (AttachSectorsError) Error ¶
func (e AttachSectorsError) Error() string
type AttachSectorsRequest ¶
type AttachSectorsRequest struct { ContractID types.FileContractID `json:"contract_id"` Sectors []TokenAndSector `json:"sectors"` Revision types.FileContractRevision `json:"revision"` RenterSignature []byte `json:"renter_signature"` BlockHeight types.BlockHeight `json:"block_height"` // must be current or previous block }
AttachSectorsRequest represent request data.
type AttachSectorsResponse ¶
type AttachSectorsResponse struct {
HostSignature []byte `json:"host_signature"`
}
AttachSectorsResponse represent response data.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func HostClientFromHttpClient ¶
func HostClientFromHttpClient(host, port string, client api2.HttpClient) (*Client, error)
HostClientFromHttpClient creates host API client initialized with provided http.Client.
func HostClientFromPk ¶
func HostClientFromPk(host, port string, hostPk types.SiaPublicKey) (*Client, error)
HostClientFromPk creates host API client using public key.
func (*Client) AttachSectors ¶
func (c *Client) AttachSectors(ctx context.Context, req *AttachSectorsRequest) (res *AttachSectorsResponse, err error)
func (*Client) DownloadAndVerify ¶
func (c *Client) DownloadAndVerify(ctx context.Context, req *DownloadWithTokenRequest) (*DownloadWithTokenResponse, error)
DownloadAndVerify calls Client.DownloadWithToken() and verifies merkle proofs.
func (*Client) DownloadWithToken ¶
func (c *Client) DownloadWithToken(ctx context.Context, req *DownloadWithTokenRequest) (res *DownloadWithTokenResponse, err error)
func (*Client) Health ¶
func (c *Client) Health(ctx context.Context, req *HealthRequest) (res *HealthResponse, err error)
func (*Client) ListSectorIDs ¶
func (c *Client) ListSectorIDs(ctx context.Context, req *ListSectorIDsRequest) (res *ListSectorIDsResponse, err error)
func (*Client) RemoveSectors ¶
func (c *Client) RemoveSectors(ctx context.Context, req *RemoveSectorsRequest) (res *RemoveSectorsResponse, err error)
func (*Client) TokenResources ¶
func (c *Client) TokenResources(ctx context.Context, req *TokenResourcesRequest) (res *TokenResourcesResponse, err error)
func (*Client) UploadWithToken ¶
func (c *Client) UploadWithToken(ctx context.Context, req *UploadWithTokenRequest) (res *UploadWithTokenResponse, err error)
type DownloadWithTokenError ¶
type DownloadWithTokenError struct { NotEnoughSectorAccesses bool `json:"not_enough_sector_accesses,omitempty"` NotEnoughBytes bool `json:"not_enough_bytes,omitempty"` NoSuchSector *crypto.Hash `json:"no_such_sector,omitempty"` UnknownError string `json:"unknown_error,omitempty"` }
DownloadWithTokenError represent error message.
func (DownloadWithTokenError) Error ¶
func (e DownloadWithTokenError) Error() string
type DownloadWithTokenRequest ¶
type DownloadWithTokenRequest struct { Authorization string `header:"Authorization"` Ranges []Range `json:"ranges"` }
DownloadWithTokenRequest represent request.
type DownloadWithTokenResponse ¶
type DownloadWithTokenResponse struct { Sections []Section `json:"sections"` TokenRecord *TokenRecord `json:"token_record,omitempty"` }
DownloadWithTokenResponse represent response.
type HandlerHTTPapi ¶
type HandlerHTTPapi interface { Health(ctx context.Context, req *HealthRequest) (*HealthResponse, error) TokenResources(ctx context.Context, req *TokenResourcesRequest) (*TokenResourcesResponse, error) ListSectorIDs(ctx context.Context, req *ListSectorIDsRequest) (*ListSectorIDsResponse, error) RemoveSectors(ctx context.Context, req *RemoveSectorsRequest) (*RemoveSectorsResponse, error) DownloadWithToken(context.Context, *DownloadWithTokenRequest) (*DownloadWithTokenResponse, error) UploadWithToken(context.Context, *UploadWithTokenRequest) (*UploadWithTokenResponse, error) AttachSectors(context.Context, *AttachSectorsRequest) (*AttachSectorsResponse, error) }
HandlerHTTPapi api interface.
type HealthResponse ¶
type HealthResponse struct { Alive bool `json:"alive"` OS string `json:"os"` Arch string `json:"arch"` Commit string `json:"commit"` BuildTime string `json:"build_time"` BlockHeight types.BlockHeight `json:"block_height"` }
HealthResponse is a response for /health endpoint.
type Host ¶
type Host interface { BlockHeight() types.BlockHeight AddSector(sectorRoot crypto.Hash, sectorData []byte) error RemoveSectorBatch(sectorRoots []crypto.Hash) error ReadSector(sectorRoot crypto.Hash) ([]byte, error) MoveTokenSectorsToStorageObligation(fcID types.FileContractID, newRev types.FileContractRevision, sectorsWithTokens []types.SectorWithToken, renterSig []byte) ([]byte, error) }
Host represent host interface.
type HostClienter ¶
type HostClienter struct {
// contains filtered or unexported fields
}
HostClienter stores and provides clients for host API.
func (*HostClienter) Client ¶
func (hc *HostClienter) Client(host, port string, hostPk types.SiaPublicKey) (*Client, error)
Client returns client by public key.
type HostClienterConfig ¶ added in v1.6.2
type HostClienterConfig struct {
// contains filtered or unexported fields
}
HostClienterConfig represents HostClienter settings.
func NewDefaultHostClienterConfig ¶ added in v1.6.2
func NewDefaultHostClienterConfig() *HostClienterConfig
NewDefaultHostClienterConfig creates default HostClienterConfig.
type ListSectorIDsRequest ¶
type ListSectorIDsRequest struct { Authorization string `header:"Authorization"` PageID string `json:"page_id"` }
ListSectorIDsRequest represents request.
type ListSectorIDsResponse ¶
type ListSectorIDsResponse struct { SectorIDs []crypto.Hash `json:"sector_ids"` NextPageID string `json:"next_page_id"` }
ListSectorIDsResponse represents response.
type Option ¶ added in v1.6.2
type Option func(*HostClienterConfig)
Option is option callback for NewHostClienter.
type Range ¶
type Range struct { MerkleRoot crypto.Hash `json:"merkle_root"` Offset uint32 `json:"offset"` Length uint32 `json:"length"` MerkleProof bool `json:"merkle_proof"` }
Range part of request.
type RemoveSectorsRequest ¶
type RemoveSectorsRequest struct { Authorization string `header:"Authorization"` SectorIDs []crypto.Hash }
RemoveSectorsRequest represents request.
type RemoveSectorsResponse ¶
type RemoveSectorsResponse struct{}
RemoveSectorsResponse represents response.
type TokenAndSector ¶
type TokenAndSector struct { Authorization string `json:"Authorization"` SectorID crypto.Hash `json:"sector_id"` }
TokenAndSector include information about token and sectors.
type TokenRecord ¶
type TokenRecord struct { DownloadBytes int64 `json:"download_bytes"` UploadBytes int64 `json:"upload_bytes"` SectorAccesses int64 `json:"sector_accesses"` TokenInfo TokenStorageInfo `json:"token_info"` }
TokenRecord include information about token record.
type TokenResourcesRequest ¶
type TokenResourcesRequest struct {
Authorization string `header:"Authorization"`
}
TokenResourcesRequest represents request.
type TokenResourcesResponse ¶
type TokenResourcesResponse struct { UploadBytes int64 `json:"upload_bytes,omitempty"` DownloadBytes int64 `json:"download_bytes,omitempty"` SectorAccesses int64 `json:"sector_accesses,omitempty"` Storage int64 `json:"storage,omitempty"` LastChangeTime time.Time `json:"last_change_time,omitempty"` }
TokenResourcesResponse represents response.
type TokenStorage ¶
type TokenStorage interface { TokenRecord(id types.TokenID) (tokenstorage.TokenRecord, error) RecordDownload(id types.TokenID, downloadBytes, sectorAccesses int64, time time.Time) (tokenstorage.TokenRecord, error) AddSectors(id types.TokenID, sectorsIDs []crypto.Hash, time time.Time) (tokenstorage.TokenRecord, error) ListSectorIDs(id types.TokenID, pageID string, limit int) (sectorIDs []crypto.Hash, nextPageID string, err error) RemoveSpecificSectors(id types.TokenID, sectorsIDs []crypto.Hash, time time.Time) error AttachSectors(tokensSectors map[types.TokenID][]crypto.Hash, time time.Time) error EnoughStorageResource(id types.TokenID, sectorsNum int64, now time.Time) (bool, error) }
TokenStorage represent communication between api and token storage.
type TokenStorageInfo ¶
type TokenStorageInfo struct { Storage int64 `json:"storage"` // sectors * second. SectorsNum uint64 `json:"sectors_num"` LastChangeTime time.Time `json:"last_change_time"` }
TokenStorageInfo represent info about token storage resource.
type UploadWithTokenError ¶
type UploadWithTokenError struct { DataLengthIsZero bool `json:"data_length_is_zero,omitempty"` IncorrectSectorSize bool `json:"incorrect_sector_size,omitempty"` NotEnoughBytes bool `json:"not_enough_bytes,omitempty"` NotEnoughStorage bool `json:"not_enough_storage,omitempty"` UnknownError string `json:"unknown_error,omitempty"` TokenRecord *TokenRecord `json:"token_record,omitempty"` }
UploadWithTokenError represent error message.
func (UploadWithTokenError) Error ¶
func (e UploadWithTokenError) Error() string
type UploadWithTokenRequest ¶
type UploadWithTokenRequest struct { Authorization string `header:"Authorization"` Sectors [][]byte `json:"sectors"` }
UploadWithTokenRequest represent request data.
type UploadWithTokenResponse ¶
type UploadWithTokenResponse struct {
TokenRecord *TokenRecord `json:"token_record,omitempty"`
}
UploadWithTokenResponse represent response data.