multipart: rename files and unexport errors

This commit is contained in:
Adrien Marquès 2020-04-04 12:43:55 +02:00
parent 4ba62e19c7
commit caa57889b4
Signed by: xdrm-brackets
GPG Key ID: D75243CA236D825E
4 changed files with 17 additions and 18 deletions

View File

@ -13,19 +13,19 @@ func (comp *Component) parseHeaders(_raw []byte) error {
// 1. Extract lines // 1. Extract lines
_lines := strings.Split(string(_raw), "\n") _lines := strings.Split(string(_raw), "\n")
if len(_lines) < 2 { if len(_lines) < 2 {
return ErrNoHeader return errNoHeader
} }
// 2. trim each line + remove 'Content-Disposition' prefix // 2. trim each line + remove 'Content-Disposition' prefix
header := strings.Trim(_lines[0], " \t\r") header := strings.Trim(_lines[0], " \t\r")
if !strings.HasPrefix(header, "Content-Disposition: form-data;") { if !strings.HasPrefix(header, "Content-Disposition: form-data;") {
return ErrNoHeader return errNoHeader
} }
header = strings.Trim(header[len("Content-Disposition: form-data;"):], " \t\r") header = strings.Trim(header[len("Content-Disposition: form-data;"):], " \t\r")
if len(header) < 1 { if len(header) < 1 {
return ErrNoHeader return errNoHeader
} }
// 3. Extract each key-value pair // 3. Extract each key-value pair

View File

@ -3,19 +3,18 @@ package multipart
// cerr allows you to create constant "const" error with type boxing. // cerr allows you to create constant "const" error with type boxing.
type cerr string type cerr string
// Error implements the error builtin interface.
func (err cerr) Error() string { func (err cerr) Error() string {
return string(err) return string(err)
} }
// ErrMissingDataName is set when a multipart variable/file has no name="..." // errMissingDataName is set when a multipart variable/file has no name="..."
const ErrMissingDataName = cerr("data has no name") const errMissingDataName = cerr("data has no name")
// ErrDataNameConflict is set when a multipart variable/file name is already used // errDataNameConflict is set when a multipart variable/file name is already used
const ErrDataNameConflict = cerr("data name conflict") const errDataNameConflict = cerr("data name conflict")
// ErrNoHeader is set when a multipart variable/file has no (valid) header // errNoHeader is set when a multipart variable/file has no (valid) header
const ErrNoHeader = cerr("data has no header") const errNoHeader = cerr("data has no header")
// Component represents a multipart variable/file // Component represents a multipart variable/file
type Component struct { type Component struct {

View File

@ -71,11 +71,11 @@ func (reader *Reader) Parse() error {
name := comp.GetHeader("name") name := comp.GetHeader("name")
if len(name) < 1 { if len(name) < 1 {
return ErrMissingDataName return errMissingDataName
} }
if _, nameUsed := reader.Data[name]; nameUsed { if _, nameUsed := reader.Data[name]; nameUsed {
return ErrDataNameConflict return errDataNameConflict
} }
reader.Data[name] = comp reader.Data[name] = comp

View File

@ -196,8 +196,8 @@ func TestNoName(t *testing.T) {
return return
} }
if err = mpr.Parse(); err != ErrMissingDataName { if err = mpr.Parse(); err != errMissingDataName {
t.Errorf("expected the error <%s>, got <%s>", ErrMissingDataName, err) t.Errorf("expected the error <%s>, got <%s>", errMissingDataName, err)
return return
} }
}) })
@ -238,8 +238,8 @@ func TestNoHeader(t *testing.T) {
return return
} }
if err = mpr.Parse(); err != ErrNoHeader { if err = mpr.Parse(); err != errNoHeader {
t.Errorf("expected the error <%s>, got <%s>", ErrNoHeader, err) t.Errorf("expected the error <%s>, got <%s>", errNoHeader, err)
return return
} }
}) })
@ -274,8 +274,8 @@ facebook.com
t.Fatalf("unexpected error <%s>", err) t.Fatalf("unexpected error <%s>", err)
} }
if err = mpr.Parse(); err != ErrDataNameConflict { if err = mpr.Parse(); err != errDataNameConflict {
t.Fatalf("expected the error <%s>, got <%s>", ErrDataNameConflict, err) t.Fatalf("expected the error <%s>, got <%s>", errDataNameConflict, err)
} }
} }