1
0
api/ent/ogent/oas_client_gen.go

565 lines
13 KiB
Go
Raw Normal View History

2022-08-31 06:18:14 +00:00
// Code generated by ogen, DO NOT EDIT.
package ogent
import (
"bytes"
"context"
"fmt"
"io"
"math"
"math/big"
"math/bits"
"net"
"net/http"
"net/url"
"regexp"
"sort"
"strconv"
"strings"
"sync"
"time"
"github.com/go-faster/errors"
"github.com/go-faster/jx"
"github.com/google/uuid"
"github.com/ogen-go/ogen/conv"
ht "github.com/ogen-go/ogen/http"
"github.com/ogen-go/ogen/json"
"github.com/ogen-go/ogen/otelogen"
"github.com/ogen-go/ogen/uri"
"github.com/ogen-go/ogen/validate"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/trace"
)
// No-op definition for keeping imports.
var (
_ = context.Background()
_ = fmt.Stringer(nil)
_ = strings.Builder{}
_ = errors.Is
_ = sort.Ints
_ = http.MethodGet
_ = io.Copy
_ = json.Marshal
_ = bytes.NewReader
_ = strconv.ParseInt
_ = time.Time{}
_ = conv.ToInt32
_ = uuid.UUID{}
_ = uri.PathEncoder{}
_ = url.URL{}
_ = math.Mod
_ = bits.LeadingZeros64
_ = big.Rat{}
_ = validate.Int{}
_ = ht.NewRequest
_ = net.IP{}
_ = otelogen.Version
_ = attribute.KeyValue{}
_ = trace.TraceIDFromHex
_ = otel.GetTracerProvider
_ = metric.NewNoopMeterProvider
_ = regexp.MustCompile
_ = jx.Null
_ = sync.Pool{}
_ = codes.Unset
)
// Client implements OAS client.
type Client struct {
serverURL *url.URL
cfg config
requests metric.Int64Counter
errors metric.Int64Counter
duration metric.Int64Histogram
}
// NewClient initializes new Client defined by OAS.
func NewClient(serverURL string, opts ...Option) (*Client, error) {
u, err := url.Parse(serverURL)
if err != nil {
return nil, err
}
c := &Client{
cfg: newConfig(opts...),
serverURL: u,
}
if c.requests, err = c.cfg.Meter.NewInt64Counter(otelogen.ClientRequestCount); err != nil {
return nil, err
}
if c.errors, err = c.cfg.Meter.NewInt64Counter(otelogen.ClientErrorsCount); err != nil {
return nil, err
}
if c.duration, err = c.cfg.Meter.NewInt64Histogram(otelogen.ClientDuration); err != nil {
return nil, err
}
return c, nil
}
// CreateUsers invokes createUsers operation.
//
// Creates a new Users and persists it to storage.
//
// POST /users
func (c *Client) CreateUsers(ctx context.Context, request CreateUsersReq) (res CreateUsersRes, err error) {
if err := func() error {
if err := request.Validate(); err != nil {
return err
}
return nil
}(); err != nil {
return res, errors.Wrap(err, "validate")
}
startTime := time.Now()
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("createUsers"),
}
ctx, span := c.cfg.Tracer.Start(ctx, "CreateUsers",
trace.WithAttributes(otelAttrs...),
trace.WithSpanKind(trace.SpanKindClient),
)
defer func() {
if err != nil {
span.RecordError(err)
c.errors.Add(ctx, 1, otelAttrs...)
} else {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}
span.End()
}()
c.requests.Add(ctx, 1, otelAttrs...)
var (
contentType string
reqBody io.Reader
)
contentType = "application/json"
buf, err := encodeCreateUsersRequestJSON(request, span)
if err != nil {
return res, err
}
defer jx.PutEncoder(buf)
reqBody = bytes.NewReader(buf.Bytes())
u := uri.Clone(c.serverURL)
u.Path += "/users"
r := ht.NewRequest(ctx, "POST", u, reqBody)
defer ht.PutRequest(r)
r.Header.Set("Content-Type", contentType)
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
result, err := decodeCreateUsersResponse(resp, span)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// DeleteUsers invokes deleteUsers operation.
//
// Deletes the Users with the requested ID.
//
// DELETE /users/{id}
func (c *Client) DeleteUsers(ctx context.Context, params DeleteUsersParams) (res DeleteUsersRes, err error) {
startTime := time.Now()
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("deleteUsers"),
}
ctx, span := c.cfg.Tracer.Start(ctx, "DeleteUsers",
trace.WithAttributes(otelAttrs...),
trace.WithSpanKind(trace.SpanKindClient),
)
defer func() {
if err != nil {
span.RecordError(err)
c.errors.Add(ctx, 1, otelAttrs...)
} else {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}
span.End()
}()
c.requests.Add(ctx, 1, otelAttrs...)
u := uri.Clone(c.serverURL)
u.Path += "/users/"
{
// Encode "id" parameter.
e := uri.NewPathEncoder(uri.PathEncoderConfig{
Param: "id",
Style: uri.PathStyleSimple,
Explode: false,
})
if err := func() error {
return e.EncodeValue(conv.IntToString(params.ID))
}(); err != nil {
return res, errors.Wrap(err, "encode path")
}
u.Path += e.Result()
}
r := ht.NewRequest(ctx, "DELETE", u, nil)
defer ht.PutRequest(r)
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
result, err := decodeDeleteUsersResponse(resp, span)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// DrawDone invokes drawDone operation.
//
// PUT /users/{id}/d
func (c *Client) DrawDone(ctx context.Context, params DrawDoneParams) (res DrawDoneNoContent, err error) {
startTime := time.Now()
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("drawDone"),
}
ctx, span := c.cfg.Tracer.Start(ctx, "DrawDone",
trace.WithAttributes(otelAttrs...),
trace.WithSpanKind(trace.SpanKindClient),
)
defer func() {
if err != nil {
span.RecordError(err)
c.errors.Add(ctx, 1, otelAttrs...)
} else {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}
span.End()
}()
c.requests.Add(ctx, 1, otelAttrs...)
u := uri.Clone(c.serverURL)
u.Path += "/users/"
{
// Encode "id" parameter.
e := uri.NewPathEncoder(uri.PathEncoderConfig{
Param: "id",
Style: uri.PathStyleSimple,
Explode: false,
})
if err := func() error {
return e.EncodeValue(conv.IntToString(params.ID))
}(); err != nil {
return res, errors.Wrap(err, "encode path")
}
u.Path += e.Result()
}
u.Path += "/d"
r := ht.NewRequest(ctx, "PUT", u, nil)
defer ht.PutRequest(r)
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
result, err := decodeDrawDoneResponse(resp, span)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// DrawStart invokes drawStart operation.
//
// PATCH /users/{id}/start
func (c *Client) DrawStart(ctx context.Context, params DrawStartParams) (res DrawStartNoContent, err error) {
startTime := time.Now()
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("drawStart"),
}
ctx, span := c.cfg.Tracer.Start(ctx, "DrawStart",
trace.WithAttributes(otelAttrs...),
trace.WithSpanKind(trace.SpanKindClient),
)
defer func() {
if err != nil {
span.RecordError(err)
c.errors.Add(ctx, 1, otelAttrs...)
} else {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}
span.End()
}()
c.requests.Add(ctx, 1, otelAttrs...)
u := uri.Clone(c.serverURL)
u.Path += "/users/"
{
// Encode "id" parameter.
e := uri.NewPathEncoder(uri.PathEncoderConfig{
Param: "id",
Style: uri.PathStyleSimple,
Explode: false,
})
if err := func() error {
return e.EncodeValue(conv.IntToString(params.ID))
}(); err != nil {
return res, errors.Wrap(err, "encode path")
}
u.Path += e.Result()
}
u.Path += "/start"
r := ht.NewRequest(ctx, "PATCH", u, nil)
defer ht.PutRequest(r)
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
result, err := decodeDrawStartResponse(resp, span)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// ListUsers invokes listUsers operation.
//
// List Users.
//
// GET /users
func (c *Client) ListUsers(ctx context.Context, params ListUsersParams) (res ListUsersRes, err error) {
startTime := time.Now()
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("listUsers"),
}
ctx, span := c.cfg.Tracer.Start(ctx, "ListUsers",
trace.WithAttributes(otelAttrs...),
trace.WithSpanKind(trace.SpanKindClient),
)
defer func() {
if err != nil {
span.RecordError(err)
c.errors.Add(ctx, 1, otelAttrs...)
} else {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}
span.End()
}()
c.requests.Add(ctx, 1, otelAttrs...)
u := uri.Clone(c.serverURL)
u.Path += "/users"
q := u.Query()
{
// Encode "page" parameter.
e := uri.NewQueryEncoder(uri.QueryEncoderConfig{
Style: uri.QueryStyleForm,
Explode: true,
})
if err := func() error {
if val, ok := params.Page.Get(); ok {
return e.EncodeValue(conv.IntToString(val))
}
return nil
}(); err != nil {
return res, errors.Wrap(err, "encode query")
}
q["page"] = e.Result()
}
{
// Encode "itemsPerPage" parameter.
e := uri.NewQueryEncoder(uri.QueryEncoderConfig{
Style: uri.QueryStyleForm,
Explode: true,
})
if err := func() error {
if val, ok := params.ItemsPerPage.Get(); ok {
return e.EncodeValue(conv.IntToString(val))
}
return nil
}(); err != nil {
return res, errors.Wrap(err, "encode query")
}
q["itemsPerPage"] = e.Result()
}
u.RawQuery = q.Encode()
r := ht.NewRequest(ctx, "GET", u, nil)
defer ht.PutRequest(r)
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
result, err := decodeListUsersResponse(resp, span)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// ReadUsers invokes readUsers operation.
//
// Finds the Users with the requested ID and returns it.
//
// GET /users/{id}
func (c *Client) ReadUsers(ctx context.Context, params ReadUsersParams) (res ReadUsersRes, err error) {
startTime := time.Now()
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("readUsers"),
}
ctx, span := c.cfg.Tracer.Start(ctx, "ReadUsers",
trace.WithAttributes(otelAttrs...),
trace.WithSpanKind(trace.SpanKindClient),
)
defer func() {
if err != nil {
span.RecordError(err)
c.errors.Add(ctx, 1, otelAttrs...)
} else {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}
span.End()
}()
c.requests.Add(ctx, 1, otelAttrs...)
u := uri.Clone(c.serverURL)
u.Path += "/users/"
{
// Encode "id" parameter.
e := uri.NewPathEncoder(uri.PathEncoderConfig{
Param: "id",
Style: uri.PathStyleSimple,
Explode: false,
})
if err := func() error {
return e.EncodeValue(conv.IntToString(params.ID))
}(); err != nil {
return res, errors.Wrap(err, "encode path")
}
u.Path += e.Result()
}
r := ht.NewRequest(ctx, "GET", u, nil)
defer ht.PutRequest(r)
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
result, err := decodeReadUsersResponse(resp, span)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// UpdateUsers invokes updateUsers operation.
//
// Updates a Users and persists changes to storage.
//
// PATCH /users/{id}
func (c *Client) UpdateUsers(ctx context.Context, request UpdateUsersReq, params UpdateUsersParams) (res UpdateUsersRes, err error) {
if err := func() error {
if err := request.Validate(); err != nil {
return err
}
return nil
}(); err != nil {
return res, errors.Wrap(err, "validate")
}
startTime := time.Now()
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("updateUsers"),
}
ctx, span := c.cfg.Tracer.Start(ctx, "UpdateUsers",
trace.WithAttributes(otelAttrs...),
trace.WithSpanKind(trace.SpanKindClient),
)
defer func() {
if err != nil {
span.RecordError(err)
c.errors.Add(ctx, 1, otelAttrs...)
} else {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}
span.End()
}()
c.requests.Add(ctx, 1, otelAttrs...)
var (
contentType string
reqBody io.Reader
)
contentType = "application/json"
buf, err := encodeUpdateUsersRequestJSON(request, span)
if err != nil {
return res, err
}
defer jx.PutEncoder(buf)
reqBody = bytes.NewReader(buf.Bytes())
u := uri.Clone(c.serverURL)
u.Path += "/users/"
{
// Encode "id" parameter.
e := uri.NewPathEncoder(uri.PathEncoderConfig{
Param: "id",
Style: uri.PathStyleSimple,
Explode: false,
})
if err := func() error {
return e.EncodeValue(conv.IntToString(params.ID))
}(); err != nil {
return res, errors.Wrap(err, "encode path")
}
u.Path += e.Result()
}
r := ht.NewRequest(ctx, "PATCH", u, reqBody)
defer ht.PutRequest(r)
r.Header.Set("Content-Type", contentType)
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
result, err := decodeUpdateUsersResponse(resp, span)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}