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}