summaryrefslogtreecommitdiff
path: root/key_form_input.go
diff options
context:
space:
mode:
Diffstat (limited to 'key_form_input.go')
-rw-r--r--key_form_input.go36
1 files changed, 35 insertions, 1 deletions
diff --git a/key_form_input.go b/key_form_input.go
index afcbce7..8cceba8 100644
--- a/key_form_input.go
+++ b/key_form_input.go
@@ -6,11 +6,24 @@ package trunks
import (
"net/http"
"net/url"
+ "strconv"
"strings"
"github.com/shuLhan/share/lib/math/big"
)
+// List of additional parameters to be generated and send if the [FormInput]
+// Kind is [FormInputKindFile].
+//
+// Caller can changes the name by using [FormInput] FormDataName.
+const (
+ FormDataFilecontent = `filecontent`
+ FormDataFilemodms = `filemodms`
+ FormDataFilename = `filename`
+ FormDataFilesize = `filesize`
+ FormDataFiletype = `filetype`
+)
+
// KeyFormInput is the simplified type for getting and setting HTTP headers
// and request parameters (either in query or in the parameter body).
type KeyFormInput map[string]FormInput
@@ -64,7 +77,28 @@ func (kfi KeyFormInput) ToMultipartFormData() (data map[string][]byte) {
return data
}
for k, fi := range kfi {
- data[k] = []byte(fi.Value)
+ if fi.Kind == FormInputKindFile {
+ var name string
+
+ if len(fi.Filename) != 0 {
+ name = fi.FormDataName(FormDataFilename)
+ data[name] = []byte(fi.Filename)
+ }
+ if len(fi.Filetype) != 0 {
+ name = fi.FormDataName(FormDataFiletype)
+ data[name] = []byte(fi.Filetype)
+ }
+ name = fi.FormDataName(FormDataFilesize)
+ data[name] = []byte(strconv.FormatInt(fi.Filesize, 10))
+
+ name = fi.FormDataName(FormDataFilemodms)
+ data[name] = []byte(strconv.FormatInt(fi.Filemodms, 10))
+
+ name = fi.FormDataName(FormDataFilecontent)
+ data[name] = []byte(fi.Value)
+ } else {
+ data[k] = []byte(fi.Value)
+ }
}
return data
}