text: // Copyright 2015 go-swagger maintainers
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // you may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //    http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  
  package errors
  
  import "fmt"
  
  // ParseError respresents a parsing error
  type ParseError struct {
  	code    int32
  	Name    string
  	In      string
  	Value   string
  	Reason  error
  	message string
  }
  
  func (e *ParseError) Error() string {
  	return e.message
  }
  
  // Code returns the http status code for this error
  func (e *ParseError) Code() int32 {
  	return e.code
  }
  
  const (
  	parseErrorTemplContent     = `parsing %s %s from %q failed, because %s`
  	parseErrorTemplContentNoIn = `parsing %s from %q failed, because %s`
  )
  
  // NewParseError creates a new parse error
  func NewParseError(name, in, value string, reason error) *ParseError {
  	var msg string
  	if in == "" {
  		msg = fmt.Sprintf(parseErrorTemplContentNoIn, name, value, reason)
  	} else {
  		msg = fmt.Sprintf(parseErrorTemplContent, name, in, value, reason)
  	}
  	return &ParseError{
  		code:    400,
  		Name:    name,
  		In:      in,
  		Value:   value,
  		Reason:  reason,
  		message: msg,
  	}
  }
  