package utils import ( "context" "fmt" "git.frostfs.info/TrueCloudLab/frostfs-http-gw/resolver" cid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/pool" "github.com/valyala/fasthttp" ) // GetContainerID decode container id, if it's not a valid container id // then trey to resolve name using provided resolver. func GetContainerID(ctx context.Context, containerID string, resolver *resolver.ContainerResolver) (*cid.ID, error) { cnrID := new(cid.ID) err := cnrID.DecodeString(containerID) if err != nil { cnrID, err = resolver.Resolve(ctx, containerID) } return cnrID, err } type EpochDurations struct { CurrentEpoch uint64 MsPerBlock int64 BlockPerEpoch uint64 } func GetEpochDurations(ctx context.Context, p *pool.Pool) (*EpochDurations, error) { networkInfo, err := p.NetworkInfo(ctx) if err != nil { return nil, err } res := &EpochDurations{ CurrentEpoch: networkInfo.CurrentEpoch(), MsPerBlock: networkInfo.MsPerBlock(), BlockPerEpoch: networkInfo.EpochDuration(), } if res.BlockPerEpoch == 0 { return nil, fmt.Errorf("EpochDuration is empty") } return res, nil } // SetContextToRequest adds new context to fasthttp request. func SetContextToRequest(ctx context.Context, c *fasthttp.RequestCtx) { c.SetUserValue("context", ctx) } // GetContextFromRequest returns main context from fasthttp request context. func GetContextFromRequest(c *fasthttp.RequestCtx) context.Context { return c.UserValue("context").(context.Context) }