Documentation ¶
Index ¶
- Constants
- Variables
- func CanonicalHeaderKey(s string) string
- func CheckResponseCode(respCode int, allowed []int) error
- func Download(request *Request) (io.ReadCloser, error)
- func GetContentLength(request *Request) (int64, error)
- func GetLastModified(request *Request) (int64, error)
- func IsExpired(request *Request, info *ExpireInfo) (bool, error)
- func IsNoClientFoundError(err error) bool
- func IsResourceNotReachableError(err error) bool
- func IsSupportRange(request *Request) (bool, error)
- func Register(scheme string, resourceClient ResourceClient, adaptor requestAdapter, ...) error
- func RequestEq(url string) gomock.Matcher
- func UnRegister(scheme string)
- type ClientManager
- type ExpireInfo
- type Header
- type Hook
- type Option
- type Request
- type ResourceClient
- type Response
- type UnexpectedStatusCodeError
Constants ¶
const ( LastModified = "X-Dragonfly-Last-Modified" IfModifiedSince = "X-Dragonfly-If-Modified-Since" ETag = "X-Dragonfly-ETag" IfNoneMatch = "X-Dragonfly-If-None-Match" Range = "X-Dragonfly-Range" // startIndex-endIndex )
const LastModifiedLayout = "Mon, 02 Jan 2006 15:04:05 GMT"
const (
UnknownSourceFileLen = -2
)
Variables ¶
var ( // ErrResourceNotReachable represents the url resource is a not reachable. ErrResourceNotReachable = errors.New("resource is not reachable") // ErrNoClientFound represents no source client to resolve url ErrNoClientFound = errors.New("no source client found") )
Functions ¶
func CanonicalHeaderKey ¶ added in v2.0.2
func CheckResponseCode ¶ added in v2.0.2
CheckResponseCode returns UnexpectedStatusError if the given response code is not one of the allowed status codes; otherwise nil.
func GetContentLength ¶
func GetLastModified ¶ added in v2.0.2
func IsNoClientFoundError ¶ added in v2.0.2
func IsResourceNotReachableError ¶ added in v2.0.2
func IsSupportRange ¶
func Register ¶
func Register(scheme string, resourceClient ResourceClient, adaptor requestAdapter, hooks ...Hook) error
func UnRegister ¶
func UnRegister(scheme string)
Types ¶
type ClientManager ¶
type ClientManager interface { // Register a source client with scheme Register(scheme string, resourceClient ResourceClient, adapter requestAdapter, hook ...Hook) error // UnRegister a source client from manager UnRegister(scheme string) // GetClient a source client by scheme GetClient(scheme string, options ...Option) (ResourceClient, bool) }
func NewManager ¶
func NewManager() ClientManager
type ExpireInfo ¶ added in v2.0.2
func DownloadWithExpireInfo ¶
func DownloadWithExpireInfo(request *Request) (io.ReadCloser, *ExpireInfo, error)
type Header ¶ added in v2.0.2
A Header represents the key-value pairs in a Dragonfly source header.
The keys should be in canonical form, as returned by CanonicalHeaderKey.
func (Header) Add ¶ added in v2.0.2
Add adds the key, value pair to the header. It appends to any existing values associated with key. The key is case insensitive; it is canonicalized by CanonicalHeaderKey.
func (Header) Del ¶ added in v2.0.2
Del deletes the values associated with key. The key is case insensitive; it is canonicalized by CanonicalHeaderKey.
func (Header) Get ¶ added in v2.0.2
Get gets the first value associated with the given key. If there are no values associated with the key, Get returns "". It is case insensitive; textproto.CanonicalMIMEHeaderKey is used to canonicalize the provided key. To use non-canonical keys, access the map directly.
func (Header) Set ¶ added in v2.0.2
Set sets the header entries associated with key to the single element value. It replaces any existing values associated with key. The key is case insensitive; it is canonicalized by textproto.CanonicalMIMEHeaderKey. To use non-canonical keys, assign to the map directly.
type Hook ¶ added in v2.0.2
type Hook interface { BeforeRequest(request *Request) error AfterResponse(response *Response) error }
Hook TODO hook
type Request ¶ added in v2.0.2
func NewRequest ¶ added in v2.0.2
func NewRequestWithContext ¶ added in v2.0.2
func NewRequestWithHeader ¶ added in v2.0.2
func (*Request) Clone ¶ added in v2.0.2
Clone returns a deep copy of r with its context changed to ctx. The provided ctx must be non-nil.
For an outgoing client request, the context controls the entire lifetime of a request and its response: obtaining a connection, sending the request, and reading the response headers and body.
func (*Request) Context ¶ added in v2.0.2
Context returns the request's context. To change the context, use WithContext.
The returned context is always non-nil; it defaults to the background context.
For outgoing client requests, the context controls cancellation.
For incoming server requests, the context is canceled when the client's connection closes, the request is canceled (with HTTP/2), or when the ServeHTTP method returns.
func (*Request) WithContext ¶ added in v2.0.2
WithContext returns a shallow copy of r with its context changed to ctx. The provided ctx must be non-nil.
For outgoing client request, the context controls the entire lifetime of a request and its response: obtaining a connection, sending the request, and reading the response headers and body.
To create a new request with a context, use NewRequestWithContext. To change the context of a request, such as an incoming request you want to modify before sending back out, use Request.Clone. Between those two uses, it's rare to need WithContext.
type ResourceClient ¶
type ResourceClient interface { // GetContentLength get length of resource content // return source.UnknownSourceFileLen if response status is not StatusOK and StatusPartialContent GetContentLength(request *Request) (int64, error) // IsSupportRange checks if resource supports breakpoint continuation // return false if response status is not StatusPartialContent IsSupportRange(request *Request) (bool, error) // IsExpired checks if a resource received or stored is the same. // return false and non-nil err to prevent the source from exploding if // fails to get the result, it is considered that the source has not expired IsExpired(request *Request, info *ExpireInfo) (bool, error) // Download downloads from source Download(request *Request) (io.ReadCloser, error) // DownloadWithExpireInfo download from source with expireInfo DownloadWithExpireInfo(request *Request) (io.ReadCloser, *ExpireInfo, error) // GetLastModified gets last modified timestamp milliseconds of resource GetLastModified(request *Request) (int64, error) }
ResourceClient defines the API interface to interact with source.
func LoadPlugin ¶
func LoadPlugin(dir, scheme string) (ResourceClient, error)
type UnexpectedStatusCodeError ¶ added in v2.0.2
type UnexpectedStatusCodeError struct {
// contains filtered or unexported fields
}
UnexpectedStatusCodeError is returned when a source responds with neither an error nor with a status code indicating success.
func (UnexpectedStatusCodeError) Error ¶ added in v2.0.2
func (e UnexpectedStatusCodeError) Error() string
Error implements interface error
func (UnexpectedStatusCodeError) Got ¶ added in v2.0.2
func (e UnexpectedStatusCodeError) Got() int
Got is the actual status code returned by source.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package mock is a generated GoMock package.
|
Package mock is a generated GoMock package. |