multipartbuilder

package module
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 27, 2024 License: Unlicense Imports: 5 Imported by: 2

README

multipartbuilder

Go Reference Go Test Go Report Card

Simple streaming multipart builder for Go (Golang).

Usage

go get -u github.com/mxmCherry/multipartbuilder
import "github.com/mxmCherry/multipartbuilder"
builder := multipartbuilder.New()
builder.AddField("field", "value")

// or use chaining:
builder.
	AddReader("reader", strings.NewReader("Some reader")).
	AddFile("file", "path/to/file.bin")

// finalize builder (it should not be used anymore after this);
// any errors will be returned on bodyReader usage (Read/Close):
contentType, bodyReader := builder.Build()

// for proper cleanup, returned bodyReader should be used at least once,
// so at least close it (multiple closes are fine):
defer bodyReader.Close()

// finally, use built reader:
resp, err := http.Post("https://test.com/", contentType, bodyReader)
if err != nil {
	// handle error
}

Documentation

Overview

Package multipartbuilder provides simple streaming multipart builder.

Usage:

builder := multipartbuilder.New()
builder.AddField("field", "value")

// or use chaining:
builder.
  AddReader("reader", strings.NewReader("Some reader")).
  AddFile("file", "path/to/file.bin")

// finalize builder (it should not be used anymore after this);
// any errors will be returned on bodyReader usage (Read/Close):
contentType, bodyReader := builder.Build()

// for proper cleanup, returned bodyReader should be used at least once,
// so at least close it (multiple closes are fine):
defer bodyReader.Close()

// finally, use built reader:
resp, err := http.Post("https://test.com/", contentType, bodyReader)
if err != nil {
  // handle error
}

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

Builder is a multipart builder. It is not thread-safe.

func New

func New() *Builder

New constructs new multipart Builder.

func (*Builder) AddField

func (b *Builder) AddField(fieldName, value string) *Builder

AddField adds multipart field.

func (*Builder) AddFile

func (b *Builder) AddFile(fieldName, filePath string) *Builder

AddFile adds multipart file field from specified file path.

func (*Builder) AddReader

func (b *Builder) AddReader(fieldName, fileName string, reader io.Reader) *Builder

AddReader adds multipart file field from provided reader.

func (*Builder) Build

func (b *Builder) Build() (string, io.ReadCloser)

Build finalizes Builder, returning Content-Type and multipart reader. It should be called only once for Builder. Returned reader should be used (Read/Close) at least once to clean up properly. Any errors are bound to returned reader (will be returned on Read/Close).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL