mirror of
https://github.com/diamondburned/arikawa.git
synced 2025-01-07 04:27:18 +00:00
Multipartutil: move back to package api
This commit is contained in:
parent
908ef96089
commit
8baf8ee84b
35
api/send.go
35
api/send.go
|
@ -3,12 +3,12 @@ package api
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
"mime/multipart"
|
"mime/multipart"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
|
||||||
"github.com/diamondburned/arikawa/discord"
|
"github.com/diamondburned/arikawa/discord"
|
||||||
"github.com/diamondburned/arikawa/internal/mulipartutil"
|
|
||||||
"github.com/diamondburned/arikawa/utils/httputil"
|
"github.com/diamondburned/arikawa/utils/httputil"
|
||||||
"github.com/diamondburned/arikawa/utils/json"
|
"github.com/diamondburned/arikawa/utils/json"
|
||||||
)
|
)
|
||||||
|
@ -115,7 +115,7 @@ type SendMessageData struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (data *SendMessageData) WriteMultipart(body *multipart.Writer) error {
|
func (data *SendMessageData) WriteMultipart(body *multipart.Writer) error {
|
||||||
return mulipartutil.WriteMultipart(body, data, data.Files)
|
return writeMultipart(body, data, data.Files)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendMessageComplex posts a message to a guild text or DM channel. If
|
// SendMessageComplex posts a message to a guild text or DM channel. If
|
||||||
|
@ -204,5 +204,34 @@ type ExecuteWebhookData struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (data *ExecuteWebhookData) WriteMultipart(body *multipart.Writer) error {
|
func (data *ExecuteWebhookData) WriteMultipart(body *multipart.Writer) error {
|
||||||
return mulipartutil.WriteMultipart(body, data, data.Files)
|
return writeMultipart(body, data, data.Files)
|
||||||
|
}
|
||||||
|
|
||||||
|
func writeMultipart(body *multipart.Writer, item interface{}, files []SendMessageFile) error {
|
||||||
|
defer body.Close()
|
||||||
|
|
||||||
|
// Encode the JSON body first
|
||||||
|
w, err := body.CreateFormField("payload_json")
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "failed to create bodypart for JSON")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := json.EncodeStream(w, item); err != nil {
|
||||||
|
return errors.Wrap(err, "failed to encode JSON")
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, file := range files {
|
||||||
|
num := strconv.Itoa(i)
|
||||||
|
|
||||||
|
w, err := body.CreateFormFile("file"+num, file.Name)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "failed to create bodypart for "+num)
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := io.Copy(w, file.Reader); err != nil {
|
||||||
|
return errors.Wrap(err, "failed to write for file "+num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,41 +1 @@
|
||||||
package mulipartutil
|
package mulipartutil
|
||||||
|
|
||||||
import (
|
|
||||||
"io"
|
|
||||||
"mime/multipart"
|
|
||||||
"strconv"
|
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
|
|
||||||
"github.com/diamondburned/arikawa/api"
|
|
||||||
"github.com/diamondburned/arikawa/utils/json"
|
|
||||||
)
|
|
||||||
|
|
||||||
func WriteMultipart(body *multipart.Writer, item interface{}, files []api.SendMessageFile) error {
|
|
||||||
defer body.Close()
|
|
||||||
|
|
||||||
// Encode the JSON body first
|
|
||||||
w, err := body.CreateFormField("payload_json")
|
|
||||||
if err != nil {
|
|
||||||
return errors.Wrap(err, "failed to create bodypart for JSON")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := json.EncodeStream(w, item); err != nil {
|
|
||||||
return errors.Wrap(err, "failed to encode JSON")
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, file := range files {
|
|
||||||
num := strconv.Itoa(i)
|
|
||||||
|
|
||||||
w, err := body.CreateFormFile("file"+num, file.Name)
|
|
||||||
if err != nil {
|
|
||||||
return errors.Wrap(err, "failed to create bodypart for "+num)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := io.Copy(w, file.Reader); err != nil {
|
|
||||||
return errors.Wrap(err, "failed to write for file "+num)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue