github.com/hanks177/podman/v4@v4.1.3-0.20220613032544-16d90015bc83/pkg/bindings/containers/create.go (about)

     1  package containers
     2  
     3  import (
     4  	"context"
     5  	"net/http"
     6  	"strings"
     7  
     8  	"github.com/hanks177/podman/v4/pkg/bindings"
     9  	"github.com/hanks177/podman/v4/pkg/domain/entities"
    10  	"github.com/hanks177/podman/v4/pkg/specgen"
    11  	jsoniter "github.com/json-iterator/go"
    12  )
    13  
    14  func CreateWithSpec(ctx context.Context, s *specgen.SpecGenerator, options *CreateOptions) (entities.ContainerCreateResponse, error) {
    15  	var ccr entities.ContainerCreateResponse
    16  	if options == nil {
    17  		options = new(CreateOptions)
    18  	}
    19  	_ = options
    20  	conn, err := bindings.GetClient(ctx)
    21  	if err != nil {
    22  		return ccr, err
    23  	}
    24  	specgenString, err := jsoniter.MarshalToString(s)
    25  	if err != nil {
    26  		return ccr, err
    27  	}
    28  	stringReader := strings.NewReader(specgenString)
    29  	response, err := conn.DoRequest(ctx, stringReader, http.MethodPost, "/containers/create", nil, nil)
    30  	if err != nil {
    31  		return ccr, err
    32  	}
    33  	defer response.Body.Close()
    34  
    35  	return ccr, response.Process(&ccr)
    36  }