...

Source file src/github.com/go-kivik/kivik/v4/x/fsdb/errors.go

Documentation: github.com/go-kivik/kivik/v4/x/fsdb

     1  // Licensed under the Apache License, Version 2.0 (the "License"); you may not
     2  // use this file except in compliance with the License. You may obtain a copy of
     3  // the License at
     4  //
     5  //  http://www.apache.org/licenses/LICENSE-2.0
     6  //
     7  // Unless required by applicable law or agreed to in writing, software
     8  // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
     9  // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    10  // License for the specific language governing permissions and limitations under
    11  // the License.
    12  
    13  package fs
    14  
    15  import (
    16  	"errors"
    17  	"net/http"
    18  	"os"
    19  )
    20  
    21  func kerr(err error) error {
    22  	if err == nil {
    23  		return nil
    24  	}
    25  	if errors.Is(err, statusError{}) {
    26  		// Error has already been converted
    27  		return err
    28  	}
    29  	if os.IsNotExist(err) {
    30  		return statusError{status: http.StatusNotFound, error: err}
    31  	}
    32  	if os.IsPermission(err) {
    33  		return statusError{status: http.StatusForbidden, error: err}
    34  	}
    35  	return err
    36  }
    37  
    38  type statusError struct {
    39  	error
    40  	status int
    41  }
    42  
    43  func (e statusError) Unwrap() error   { return e.error }
    44  func (e statusError) HTTPStatus() int { return e.status }
    45  

View as plain text