Remove some unnecessary errors

This commit is contained in:
Adnan Maolood 2020-11-04 23:46:05 -05:00
parent 95716296b4
commit cec1f118fb
4 changed files with 12 additions and 18 deletions

View File

@ -128,7 +128,7 @@ func (c *Client) do(req *Request, via []*Request) (*Response, error) {
req.Certificate = &cert
return c.do(req, via)
}
return resp, ErrCertificateRequired
return resp, nil
case resp.Status.Class() == StatusClassInput:
if c.GetInput != nil {
@ -139,7 +139,7 @@ func (c *Client) do(req *Request, via []*Request) (*Response, error) {
return c.do(req, via)
}
}
return resp, ErrInputRequired
return resp, nil
case resp.Status.Class() == StatusClassRedirect:
if via == nil {
@ -151,12 +151,13 @@ func (c *Client) do(req *Request, via []*Request) (*Response, error) {
if err != nil {
return resp, err
}
target = req.URL.ResolveReference(target)
redirect, err := NewRequestFromURL(target)
if err != nil {
return resp, err
if target.Scheme != "" && target.Scheme != "gemini" {
return resp, nil
}
redirect := NewRequestFromURL(target)
if c.CheckRedirect != nil {
if err := c.CheckRedirect(redirect, via); err != nil {
return resp, err

4
fs.go
View File

@ -96,9 +96,9 @@ func openFile(p string) (File, error) {
if stat.Mode().IsRegular() {
return f, nil
}
return nil, ErrNotAFile
return nil, os.ErrNotExist
} else if !stat.Mode().IsRegular() {
return nil, ErrNotAFile
return nil, os.ErrNotExist
}
}
return f, nil

View File

@ -14,12 +14,8 @@ var (
ErrCertificateExpired = errors.New("gemini: certificate expired")
ErrCertificateNotFound = errors.New("gemini: certificate not found")
ErrCertificateNotTrusted = errors.New("gemini: certificate not trusted")
ErrCertificateRequired = errors.New("gemini: certificate required")
ErrNotAFile = errors.New("gemini: not a file")
ErrNotAGeminiURL = errors.New("gemini: not a Gemini URL")
ErrBodyNotAllowed = errors.New("gemini: response status code does not allow for body")
ErrBodyNotAllowed = errors.New("gemini: response body not allowed")
ErrTooManyRedirects = errors.New("gemini: too many redirects")
ErrInputRequired = errors.New("gemini: input required")
)
// defaultClient is the default client. It is used by Get and Do.

View File

@ -41,15 +41,12 @@ func NewRequest(rawurl string) (*Request, error) {
if err != nil {
return nil, err
}
return NewRequestFromURL(u)
return NewRequestFromURL(u), nil
}
// NewRequestFromURL returns a new request for the given URL.
// The host is inferred from the URL.
func NewRequestFromURL(url *url.URL) (*Request, error) {
if url.Scheme != "" && url.Scheme != "gemini" {
return nil, ErrNotAGeminiURL
}
func NewRequestFromURL(url *url.URL) *Request {
host := url.Host
if url.Port() == "" {
host += ":1965"
@ -57,7 +54,7 @@ func NewRequestFromURL(url *url.URL) (*Request, error) {
return &Request{
URL: url,
Host: host,
}, nil
}
}
// write writes the Gemini request to the provided buffered writer.