upload.go

 1package graphql
 2
 3import (
 4	"fmt"
 5	"io"
 6)
 7
 8type Upload struct {
 9	File     io.Reader
10	Filename string
11	Size     int64
12}
13
14func MarshalUpload(f Upload) Marshaler {
15	return WriterFunc(func(w io.Writer) {
16		io.Copy(w, f.File)
17	})
18}
19
20func UnmarshalUpload(v interface{}) (Upload, error) {
21	upload, ok := v.(Upload)
22	if !ok {
23		return Upload{}, fmt.Errorf("%T is not an Upload", v)
24	}
25	return upload, nil
26}