package docker

import (
	"context"
	"time"

	E "github.com/yusing/go-proxy/internal/error"
)

func Inspect(dockerHost string, containerID string) (*Container, E.NestedError) {
	client, err := ConnectClient(dockerHost)
	defer client.Close()

	if err.HasError() {
		return nil, E.FailWith("connect to docker", err)
	}

	return client.Inspect(containerID)
}

func (c Client) Inspect(containerID string) (*Container, E.NestedError) {
	ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
	defer cancel()

	json, err := c.ContainerInspect(ctx, containerID)
	if err != nil {
		return nil, E.From(err)
	}
	return FromJSON(json, c.key), nil
}