(operatorConfig OperatorConfig, endpoint string, input *HTTPUploadInput, qParams ...map[string]string)
| 93 | } |
| 94 | |
| 95 | func HTTPUpload(operatorConfig OperatorConfig, endpoint string, input *HTTPUploadInput, qParams ...map[string]string) ([]byte, error) { |
| 96 | body := new(bytes.Buffer) |
| 97 | writer := multipart.NewWriter(body) |
| 98 | |
| 99 | for fileName, filePath := range input.FilePaths { |
| 100 | file, err := files.Open(filePath) |
| 101 | if err != nil { |
| 102 | return nil, err |
| 103 | } |
| 104 | |
| 105 | defer file.Close() |
| 106 | if err := addFileToMultipart(fileName, writer, file); err != nil { |
| 107 | return nil, err |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | for fileName, fileBytes := range input.Bytes { |
| 112 | if err := addFileToMultipart(fileName, writer, bytes.NewReader(fileBytes)); err != nil { |
| 113 | return nil, err |
| 114 | } |
| 115 | } |
| 116 | |
| 117 | if err := writer.Close(); err != nil { |
| 118 | return nil, errors.Wrap(err, _errStrCantMakeRequest) |
| 119 | } |
| 120 | |
| 121 | req, err := operatorRequest(operatorConfig, http.MethodPost, endpoint, body, qParams...) |
| 122 | if err != nil { |
| 123 | return nil, err |
| 124 | } |
| 125 | |
| 126 | req.Header.Set("Content-Type", writer.FormDataContentType()) |
| 127 | return makeOperatorRequest(operatorConfig, req) |
| 128 | } |
| 129 | |
| 130 | func addFileToMultipart(fileName string, writer *multipart.Writer, reader io.Reader) error { |
| 131 | part, err := writer.CreateFormFile(fileName, fileName) |
no test coverage detected