1
0
api/ent/ogent/oas_client_gen.go

1830 lines
42 KiB
Go
Raw Normal View History

2022-08-31 06:18:14 +00:00
// Code generated by ogen, DO NOT EDIT.
package ogent
import (
"context"
"net/url"
"time"
"github.com/go-faster/errors"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace"
2022-08-31 07:49:08 +00:00
"github.com/ogen-go/ogen/conv"
ht "github.com/ogen-go/ogen/http"
"github.com/ogen-go/ogen/otelogen"
"github.com/ogen-go/ogen/uri"
2022-08-31 06:18:14 +00:00
)
// Client implements OAS client.
type Client struct {
serverURL *url.URL
2022-08-31 07:49:08 +00:00
baseClient
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
var _ Handler = struct {
*Client
}{}
2022-08-31 06:18:14 +00:00
// NewClient initializes new Client defined by OAS.
2022-08-31 07:49:08 +00:00
func NewClient(serverURL string, opts ...ClientOption) (*Client, error) {
2022-08-31 06:18:14 +00:00
u, err := url.Parse(serverURL)
if err != nil {
return nil, err
}
2022-08-31 07:49:08 +00:00
c, err := newClientConfig(opts...).baseClient()
if err != nil {
2022-08-31 06:18:14 +00:00
return nil, err
}
2022-08-31 07:49:08 +00:00
return &Client{
serverURL: u,
baseClient: c,
}, nil
}
type serverURLKey struct{}
// WithServerURL sets context key to override server URL.
func WithServerURL(ctx context.Context, u *url.URL) context.Context {
return context.WithValue(ctx, serverURLKey{}, u)
}
func (c *Client) requestURL(ctx context.Context) *url.URL {
u, ok := ctx.Value(serverURLKey{}).(*url.URL)
if !ok {
return c.serverURL
}
return u
}
// CreateCard invokes createCard operation.
//
// Creates a new Card and persists it to storage.
//
// POST /cards
func (c *Client) CreateCard(ctx context.Context, request *CreateCardReq) (CreateCardRes, error) {
res, err := c.sendCreateCard(ctx, request)
_ = res
return res, err
}
func (c *Client) sendCreateCard(ctx context.Context, request *CreateCardReq) (res CreateCardRes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("createCard"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "CreateCard",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/cards"
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "POST", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
if err := encodeCreateCardRequest(request, r); err != nil {
return res, errors.Wrap(err, "encode request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeCreateCardResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// CreateGroup invokes createGroup operation.
//
// Creates a new Group and persists it to storage.
//
// POST /groups
func (c *Client) CreateGroup(ctx context.Context, request *CreateGroupReq) (CreateGroupRes, error) {
res, err := c.sendCreateGroup(ctx, request)
_ = res
return res, err
}
func (c *Client) sendCreateGroup(ctx context.Context, request *CreateGroupReq) (res CreateGroupRes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("createGroup"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "CreateGroup",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/groups"
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "POST", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
if err := encodeCreateGroupRequest(request, r); err != nil {
return res, errors.Wrap(err, "encode request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeCreateGroupResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// CreateUser invokes createUser operation.
//
// Creates a new User and persists it to storage.
//
// POST /users
func (c *Client) CreateUser(ctx context.Context, request *CreateUserReq) (CreateUserRes, error) {
res, err := c.sendCreateUser(ctx, request)
_ = res
return res, err
}
func (c *Client) sendCreateUser(ctx context.Context, request *CreateUserReq) (res CreateUserRes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("createUser"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "CreateUser",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/users"
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "POST", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
if err := encodeCreateUserRequest(request, r); err != nil {
return res, errors.Wrap(err, "encode request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeCreateUserResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// DeleteCard invokes deleteCard operation.
//
// Deletes the Card with the requested ID.
//
// DELETE /cards/{id}
func (c *Client) DeleteCard(ctx context.Context, params DeleteCardParams) (DeleteCardRes, error) {
res, err := c.sendDeleteCard(ctx, params)
_ = res
return res, err
}
func (c *Client) sendDeleteCard(ctx context.Context, params DeleteCardParams) (res DeleteCardRes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("deleteCard"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "DeleteCard",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/cards/"
{
// 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()
}
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "DELETE", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeDeleteCardResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// DeleteGroup invokes deleteGroup operation.
//
// Deletes the Group with the requested ID.
//
// DELETE /groups/{id}
func (c *Client) DeleteGroup(ctx context.Context, params DeleteGroupParams) (DeleteGroupRes, error) {
res, err := c.sendDeleteGroup(ctx, params)
_ = res
return res, err
}
func (c *Client) sendDeleteGroup(ctx context.Context, params DeleteGroupParams) (res DeleteGroupRes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("deleteGroup"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "DeleteGroup",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/groups/"
{
// 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()
}
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "DELETE", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeDeleteGroupResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// DeleteUser invokes deleteUser operation.
//
// Deletes the User with the requested ID.
//
// DELETE /users/{id}
func (c *Client) DeleteUser(ctx context.Context, params DeleteUserParams) (DeleteUserRes, error) {
res, err := c.sendDeleteUser(ctx, params)
_ = res
return res, err
}
func (c *Client) sendDeleteUser(ctx context.Context, params DeleteUserParams) (res DeleteUserRes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("deleteUser"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "DeleteUser",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
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()
}
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "DELETE", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeDeleteUserResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// DrawDone invokes drawDone operation.
//
// Draws a card item as done.
//
// PUT /cards/{id}/d
func (c *Client) DrawDone(ctx context.Context, params DrawDoneParams) error {
res, err := c.sendDrawDone(ctx, params)
_ = res
return err
}
func (c *Client) sendDrawDone(ctx context.Context, params DrawDoneParams) (res *DrawDoneNoContent, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("drawDone"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "DrawDone",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/cards/"
{
// 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"
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "PUT", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeDrawDoneResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// DrawStart invokes drawStart operation.
//
// Draws a card item as done.
//
// PATCH /users/{id}/card/start
func (c *Client) DrawStart(ctx context.Context, params DrawStartParams) error {
res, err := c.sendDrawStart(ctx, params)
_ = res
return err
}
func (c *Client) sendDrawStart(ctx context.Context, params DrawStartParams) (res *DrawStartNoContent, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("drawStart"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "DrawStart",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
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 += "/card/start"
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "PATCH", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeDrawStartResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// ListCard invokes listCard operation.
//
// List Cards.
//
// GET /cards
func (c *Client) ListCard(ctx context.Context, params ListCardParams) (ListCardRes, error) {
res, err := c.sendListCard(ctx, params)
_ = res
return res, err
}
func (c *Client) sendListCard(ctx context.Context, params ListCardParams) (res ListCardRes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("listCard"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "ListCard",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/cards"
stage = "EncodeQueryParams"
q := uri.NewQueryEncoder()
{
// Encode "page" parameter.
cfg := uri.QueryParameterEncodingConfig{
Name: "page",
Style: uri.QueryStyleForm,
Explode: true,
}
if err := q.EncodeParam(cfg, func(e uri.Encoder) 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")
}
}
{
// Encode "itemsPerPage" parameter.
cfg := uri.QueryParameterEncodingConfig{
Name: "itemsPerPage",
Style: uri.QueryStyleForm,
Explode: true,
}
if err := q.EncodeParam(cfg, func(e uri.Encoder) 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")
}
}
u.RawQuery = q.Values().Encode()
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "GET", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeListCardResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// ListGroup invokes listGroup operation.
//
// List Groups.
//
// GET /groups
func (c *Client) ListGroup(ctx context.Context, params ListGroupParams) (ListGroupRes, error) {
res, err := c.sendListGroup(ctx, params)
_ = res
return res, err
}
func (c *Client) sendListGroup(ctx context.Context, params ListGroupParams) (res ListGroupRes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("listGroup"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "ListGroup",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/groups"
stage = "EncodeQueryParams"
q := uri.NewQueryEncoder()
{
// Encode "page" parameter.
cfg := uri.QueryParameterEncodingConfig{
Name: "page",
Style: uri.QueryStyleForm,
Explode: true,
}
if err := q.EncodeParam(cfg, func(e uri.Encoder) 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")
}
}
{
// Encode "itemsPerPage" parameter.
cfg := uri.QueryParameterEncodingConfig{
Name: "itemsPerPage",
Style: uri.QueryStyleForm,
Explode: true,
}
if err := q.EncodeParam(cfg, func(e uri.Encoder) 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")
}
}
u.RawQuery = q.Values().Encode()
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "GET", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeListGroupResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// ListGroupUsers invokes listGroupUsers operation.
//
// List attached Users.
//
// GET /groups/{id}/users
func (c *Client) ListGroupUsers(ctx context.Context, params ListGroupUsersParams) (ListGroupUsersRes, error) {
res, err := c.sendListGroupUsers(ctx, params)
_ = res
return res, err
}
func (c *Client) sendListGroupUsers(ctx context.Context, params ListGroupUsersParams) (res ListGroupUsersRes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("listGroupUsers"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "ListGroupUsers",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/groups/"
{
// 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 += "/users"
stage = "EncodeQueryParams"
q := uri.NewQueryEncoder()
{
// Encode "page" parameter.
cfg := uri.QueryParameterEncodingConfig{
Name: "page",
Style: uri.QueryStyleForm,
Explode: true,
}
if err := q.EncodeParam(cfg, func(e uri.Encoder) 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")
}
}
{
// Encode "itemsPerPage" parameter.
cfg := uri.QueryParameterEncodingConfig{
Name: "itemsPerPage",
Style: uri.QueryStyleForm,
Explode: true,
}
if err := q.EncodeParam(cfg, func(e uri.Encoder) 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")
}
}
u.RawQuery = q.Values().Encode()
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "GET", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeListGroupUsersResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// ListUser invokes listUser operation.
//
// List Users.
//
// GET /users
func (c *Client) ListUser(ctx context.Context, params ListUserParams) (ListUserRes, error) {
res, err := c.sendListUser(ctx, params)
_ = res
return res, err
}
func (c *Client) sendListUser(ctx context.Context, params ListUserParams) (res ListUserRes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("listUser"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "ListUser",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/users"
stage = "EncodeQueryParams"
q := uri.NewQueryEncoder()
{
// Encode "page" parameter.
cfg := uri.QueryParameterEncodingConfig{
Name: "page",
Style: uri.QueryStyleForm,
Explode: true,
}
if err := q.EncodeParam(cfg, func(e uri.Encoder) 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")
}
}
{
// Encode "itemsPerPage" parameter.
cfg := uri.QueryParameterEncodingConfig{
Name: "itemsPerPage",
Style: uri.QueryStyleForm,
Explode: true,
}
if err := q.EncodeParam(cfg, func(e uri.Encoder) 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")
}
}
u.RawQuery = q.Values().Encode()
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "GET", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeListUserResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
return result, nil
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
// ListUserCard invokes listUserCard operation.
2022-08-31 06:18:14 +00:00
//
2022-08-31 07:49:08 +00:00
// List attached Cards.
2022-08-31 06:18:14 +00:00
//
2022-08-31 07:49:08 +00:00
// GET /users/{id}/card
func (c *Client) ListUserCard(ctx context.Context, params ListUserCardParams) (ListUserCardRes, error) {
res, err := c.sendListUserCard(ctx, params)
_ = res
return res, err
}
func (c *Client) sendListUserCard(ctx context.Context, params ListUserCardParams) (res ListUserCardRes, err error) {
2022-08-31 06:18:14 +00:00
otelAttrs := []attribute.KeyValue{
2022-08-31 07:49:08 +00:00
otelogen.OperationID("listUserCard"),
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "ListUserCard",
2022-08-31 06:18:14 +00:00
trace.WithAttributes(otelAttrs...),
2022-08-31 07:49:08 +00:00
clientSpanKind,
2022-08-31 06:18:14 +00:00
)
2022-08-31 07:49:08 +00:00
// Track stage for error reporting.
var stage string
2022-08-31 06:18:14 +00:00
defer func() {
if err != nil {
span.RecordError(err)
2022-08-31 07:49:08 +00:00
span.SetStatus(codes.Error, stage)
2022-08-31 06:18:14 +00:00
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
2022-08-31 07:49:08 +00:00
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
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()
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
u.Path += "/card"
2022-08-31 06:18:14 +00:00
2022-08-31 07:49:08 +00:00
stage = "EncodeQueryParams"
q := uri.NewQueryEncoder()
{
// Encode "page" parameter.
cfg := uri.QueryParameterEncodingConfig{
Name: "page",
Style: uri.QueryStyleForm,
Explode: true,
}
if err := q.EncodeParam(cfg, func(e uri.Encoder) 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")
}
}
{
// Encode "itemsPerPage" parameter.
cfg := uri.QueryParameterEncodingConfig{
Name: "itemsPerPage",
Style: uri.QueryStyleForm,
Explode: true,
}
2022-08-31 06:18:14 +00:00
2022-08-31 07:49:08 +00:00
if err := q.EncodeParam(cfg, func(e uri.Encoder) 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")
}
}
u.RawQuery = q.Values().Encode()
2022-08-31 06:18:14 +00:00
2022-08-31 07:49:08 +00:00
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "GET", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
2022-08-31 06:18:14 +00:00
2022-08-31 07:49:08 +00:00
stage = "SendRequest"
2022-08-31 06:18:14 +00:00
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
2022-08-31 07:49:08 +00:00
stage = "DecodeResponse"
result, err := decodeListUserCardResponse(resp)
2022-08-31 06:18:14 +00:00
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
2022-08-31 07:49:08 +00:00
// ReadCard invokes readCard operation.
2022-08-31 06:18:14 +00:00
//
2022-08-31 07:49:08 +00:00
// Finds the Card with the requested ID and returns it.
2022-08-31 06:18:14 +00:00
//
2022-08-31 07:49:08 +00:00
// GET /cards/{id}
func (c *Client) ReadCard(ctx context.Context, params ReadCardParams) (ReadCardRes, error) {
res, err := c.sendReadCard(ctx, params)
_ = res
return res, err
}
func (c *Client) sendReadCard(ctx context.Context, params ReadCardParams) (res ReadCardRes, err error) {
2022-08-31 06:18:14 +00:00
otelAttrs := []attribute.KeyValue{
2022-08-31 07:49:08 +00:00
otelogen.OperationID("readCard"),
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "ReadCard",
2022-08-31 06:18:14 +00:00
trace.WithAttributes(otelAttrs...),
2022-08-31 07:49:08 +00:00
clientSpanKind,
2022-08-31 06:18:14 +00:00
)
2022-08-31 07:49:08 +00:00
// Track stage for error reporting.
var stage string
2022-08-31 06:18:14 +00:00
defer func() {
if err != nil {
span.RecordError(err)
2022-08-31 07:49:08 +00:00
span.SetStatus(codes.Error, stage)
2022-08-31 06:18:14 +00:00
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
2022-08-31 07:49:08 +00:00
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/cards/"
2022-08-31 06:18:14 +00:00
{
// 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()
}
2022-08-31 07:49:08 +00:00
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "GET", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
2022-08-31 06:18:14 +00:00
2022-08-31 07:49:08 +00:00
stage = "SendRequest"
2022-08-31 06:18:14 +00:00
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
2022-08-31 07:49:08 +00:00
stage = "DecodeResponse"
result, err := decodeReadCardResponse(resp)
2022-08-31 06:18:14 +00:00
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
2022-08-31 07:49:08 +00:00
// ReadCardOwner invokes readCardOwner operation.
2022-08-31 06:18:14 +00:00
//
2022-08-31 07:49:08 +00:00
// Find the attached User of the Card with the given ID.
//
// GET /cards/{id}/owner
func (c *Client) ReadCardOwner(ctx context.Context, params ReadCardOwnerParams) (ReadCardOwnerRes, error) {
res, err := c.sendReadCardOwner(ctx, params)
_ = res
return res, err
}
func (c *Client) sendReadCardOwner(ctx context.Context, params ReadCardOwnerParams) (res ReadCardOwnerRes, err error) {
2022-08-31 06:18:14 +00:00
otelAttrs := []attribute.KeyValue{
2022-08-31 07:49:08 +00:00
otelogen.OperationID("readCardOwner"),
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "ReadCardOwner",
2022-08-31 06:18:14 +00:00
trace.WithAttributes(otelAttrs...),
2022-08-31 07:49:08 +00:00
clientSpanKind,
2022-08-31 06:18:14 +00:00
)
2022-08-31 07:49:08 +00:00
// Track stage for error reporting.
var stage string
2022-08-31 06:18:14 +00:00
defer func() {
if err != nil {
span.RecordError(err)
2022-08-31 07:49:08 +00:00
span.SetStatus(codes.Error, stage)
2022-08-31 06:18:14 +00:00
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
2022-08-31 07:49:08 +00:00
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/cards/"
2022-08-31 06:18:14 +00:00
{
// 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()
}
2022-08-31 07:49:08 +00:00
u.Path += "/owner"
2022-08-31 06:18:14 +00:00
2022-08-31 07:49:08 +00:00
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "GET", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
2022-08-31 06:18:14 +00:00
2022-08-31 07:49:08 +00:00
stage = "SendRequest"
2022-08-31 06:18:14 +00:00
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
2022-08-31 07:49:08 +00:00
stage = "DecodeResponse"
result, err := decodeReadCardOwnerResponse(resp)
2022-08-31 06:18:14 +00:00
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
2022-08-31 07:49:08 +00:00
// ReadGroup invokes readGroup operation.
2022-08-31 06:18:14 +00:00
//
2022-08-31 07:49:08 +00:00
// Finds the Group with the requested ID and returns it.
//
// GET /groups/{id}
func (c *Client) ReadGroup(ctx context.Context, params ReadGroupParams) (ReadGroupRes, error) {
res, err := c.sendReadGroup(ctx, params)
_ = res
return res, err
}
func (c *Client) sendReadGroup(ctx context.Context, params ReadGroupParams) (res ReadGroupRes, err error) {
2022-08-31 06:18:14 +00:00
otelAttrs := []attribute.KeyValue{
2022-08-31 07:49:08 +00:00
otelogen.OperationID("readGroup"),
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "ReadGroup",
2022-08-31 06:18:14 +00:00
trace.WithAttributes(otelAttrs...),
2022-08-31 07:49:08 +00:00
clientSpanKind,
2022-08-31 06:18:14 +00:00
)
2022-08-31 07:49:08 +00:00
// Track stage for error reporting.
var stage string
2022-08-31 06:18:14 +00:00
defer func() {
if err != nil {
span.RecordError(err)
2022-08-31 07:49:08 +00:00
span.SetStatus(codes.Error, stage)
2022-08-31 06:18:14 +00:00
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
2022-08-31 07:49:08 +00:00
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/groups/"
2022-08-31 06:18:14 +00:00
{
// 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()
}
2022-08-31 07:49:08 +00:00
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "GET", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
2022-08-31 06:18:14 +00:00
2022-08-31 07:49:08 +00:00
stage = "SendRequest"
2022-08-31 06:18:14 +00:00
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
2022-08-31 07:49:08 +00:00
stage = "DecodeResponse"
result, err := decodeReadGroupResponse(resp)
2022-08-31 06:18:14 +00:00
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
2022-08-31 07:49:08 +00:00
// ReadUser invokes readUser operation.
2022-08-31 06:18:14 +00:00
//
2022-08-31 07:49:08 +00:00
// Finds the User with the requested ID and returns it.
2022-08-31 06:18:14 +00:00
//
2022-08-31 07:49:08 +00:00
// GET /users/{id}
func (c *Client) ReadUser(ctx context.Context, params ReadUserParams) (ReadUserRes, error) {
res, err := c.sendReadUser(ctx, params)
_ = res
return res, err
}
func (c *Client) sendReadUser(ctx context.Context, params ReadUserParams) (res ReadUserRes, err error) {
2022-08-31 06:18:14 +00:00
otelAttrs := []attribute.KeyValue{
2022-08-31 07:49:08 +00:00
otelogen.OperationID("readUser"),
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "ReadUser",
2022-08-31 06:18:14 +00:00
trace.WithAttributes(otelAttrs...),
2022-08-31 07:49:08 +00:00
clientSpanKind,
2022-08-31 06:18:14 +00:00
)
2022-08-31 07:49:08 +00:00
// Track stage for error reporting.
var stage string
2022-08-31 06:18:14 +00:00
defer func() {
if err != nil {
span.RecordError(err)
2022-08-31 07:49:08 +00:00
span.SetStatus(codes.Error, stage)
2022-08-31 06:18:14 +00:00
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
2022-08-31 07:49:08 +00:00
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/users/"
2022-08-31 06:18:14 +00:00
{
2022-08-31 07:49:08 +00:00
// Encode "id" parameter.
e := uri.NewPathEncoder(uri.PathEncoderConfig{
Param: "id",
Style: uri.PathStyleSimple,
Explode: false,
2022-08-31 06:18:14 +00:00
})
if err := func() error {
2022-08-31 07:49:08 +00:00
return e.EncodeValue(conv.IntToString(params.ID))
2022-08-31 06:18:14 +00:00
}(); err != nil {
2022-08-31 07:49:08 +00:00
return res, errors.Wrap(err, "encode path")
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
u.Path += e.Result()
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "GET", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
stage = "SendRequest"
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
stage = "DecodeResponse"
result, err := decodeReadUserResponse(resp)
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
// UpdateCard invokes updateCard operation.
//
// Updates a Card and persists changes to storage.
//
// PATCH /cards/{id}
func (c *Client) UpdateCard(ctx context.Context, request *UpdateCardReq, params UpdateCardParams) (UpdateCardRes, error) {
res, err := c.sendUpdateCard(ctx, request, params)
_ = res
return res, err
}
func (c *Client) sendUpdateCard(ctx context.Context, request *UpdateCardReq, params UpdateCardParams) (res UpdateCardRes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("updateCard"),
}
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "UpdateCard",
trace.WithAttributes(otelAttrs...),
clientSpanKind,
)
// Track stage for error reporting.
var stage string
defer func() {
if err != nil {
span.RecordError(err)
span.SetStatus(codes.Error, stage)
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/cards/"
2022-08-31 06:18:14 +00:00
{
2022-08-31 07:49:08 +00:00
// Encode "id" parameter.
e := uri.NewPathEncoder(uri.PathEncoderConfig{
Param: "id",
Style: uri.PathStyleSimple,
Explode: false,
2022-08-31 06:18:14 +00:00
})
if err := func() error {
2022-08-31 07:49:08 +00:00
return e.EncodeValue(conv.IntToString(params.ID))
2022-08-31 06:18:14 +00:00
}(); err != nil {
2022-08-31 07:49:08 +00:00
return res, errors.Wrap(err, "encode path")
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
u.Path += e.Result()
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "PATCH", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
if err := encodeUpdateCardRequest(request, r); err != nil {
return res, errors.Wrap(err, "encode request")
}
2022-08-31 06:18:14 +00:00
2022-08-31 07:49:08 +00:00
stage = "SendRequest"
2022-08-31 06:18:14 +00:00
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
2022-08-31 07:49:08 +00:00
stage = "DecodeResponse"
result, err := decodeUpdateCardResponse(resp)
2022-08-31 06:18:14 +00:00
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
2022-08-31 07:49:08 +00:00
// UpdateGroup invokes updateGroup operation.
2022-08-31 06:18:14 +00:00
//
2022-08-31 07:49:08 +00:00
// Updates a Group and persists changes to storage.
2022-08-31 06:18:14 +00:00
//
2022-08-31 07:49:08 +00:00
// PATCH /groups/{id}
func (c *Client) UpdateGroup(ctx context.Context, request *UpdateGroupReq, params UpdateGroupParams) (UpdateGroupRes, error) {
res, err := c.sendUpdateGroup(ctx, request, params)
_ = res
return res, err
}
func (c *Client) sendUpdateGroup(ctx context.Context, request *UpdateGroupReq, params UpdateGroupParams) (res UpdateGroupRes, err error) {
2022-08-31 06:18:14 +00:00
otelAttrs := []attribute.KeyValue{
2022-08-31 07:49:08 +00:00
otelogen.OperationID("updateGroup"),
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "UpdateGroup",
2022-08-31 06:18:14 +00:00
trace.WithAttributes(otelAttrs...),
2022-08-31 07:49:08 +00:00
clientSpanKind,
2022-08-31 06:18:14 +00:00
)
2022-08-31 07:49:08 +00:00
// Track stage for error reporting.
var stage string
2022-08-31 06:18:14 +00:00
defer func() {
if err != nil {
span.RecordError(err)
2022-08-31 07:49:08 +00:00
span.SetStatus(codes.Error, stage)
2022-08-31 06:18:14 +00:00
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
2022-08-31 07:49:08 +00:00
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
u.Path += "/groups/"
2022-08-31 06:18:14 +00:00
{
// 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()
}
2022-08-31 07:49:08 +00:00
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "PATCH", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
if err := encodeUpdateGroupRequest(request, r); err != nil {
return res, errors.Wrap(err, "encode request")
}
2022-08-31 06:18:14 +00:00
2022-08-31 07:49:08 +00:00
stage = "SendRequest"
2022-08-31 06:18:14 +00:00
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
2022-08-31 07:49:08 +00:00
stage = "DecodeResponse"
result, err := decodeUpdateGroupResponse(resp)
2022-08-31 06:18:14 +00:00
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}
2022-08-31 07:49:08 +00:00
// UpdateUser invokes updateUser operation.
2022-08-31 06:18:14 +00:00
//
2022-08-31 07:49:08 +00:00
// Updates a User and persists changes to storage.
2022-08-31 06:18:14 +00:00
//
// PATCH /users/{id}
2022-08-31 07:49:08 +00:00
func (c *Client) UpdateUser(ctx context.Context, request *UpdateUserReq, params UpdateUserParams) (UpdateUserRes, error) {
res, err := c.sendUpdateUser(ctx, request, params)
_ = res
return res, err
}
func (c *Client) sendUpdateUser(ctx context.Context, request *UpdateUserReq, params UpdateUserParams) (res UpdateUserRes, err error) {
2022-08-31 06:18:14 +00:00
otelAttrs := []attribute.KeyValue{
2022-08-31 07:49:08 +00:00
otelogen.OperationID("updateUser"),
2022-08-31 06:18:14 +00:00
}
2022-08-31 07:49:08 +00:00
// Run stopwatch.
startTime := time.Now()
defer func() {
elapsedDuration := time.Since(startTime)
c.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
}()
// Increment request counter.
c.requests.Add(ctx, 1, otelAttrs...)
// Start a span for this request.
ctx, span := c.cfg.Tracer.Start(ctx, "UpdateUser",
2022-08-31 06:18:14 +00:00
trace.WithAttributes(otelAttrs...),
2022-08-31 07:49:08 +00:00
clientSpanKind,
2022-08-31 06:18:14 +00:00
)
2022-08-31 07:49:08 +00:00
// Track stage for error reporting.
var stage string
2022-08-31 06:18:14 +00:00
defer func() {
if err != nil {
span.RecordError(err)
2022-08-31 07:49:08 +00:00
span.SetStatus(codes.Error, stage)
2022-08-31 06:18:14 +00:00
c.errors.Add(ctx, 1, otelAttrs...)
}
span.End()
}()
2022-08-31 07:49:08 +00:00
stage = "BuildURL"
u := uri.Clone(c.requestURL(ctx))
2022-08-31 06:18:14 +00:00
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()
}
2022-08-31 07:49:08 +00:00
stage = "EncodeRequest"
r, err := ht.NewRequest(ctx, "PATCH", u, nil)
if err != nil {
return res, errors.Wrap(err, "create request")
}
if err := encodeUpdateUserRequest(request, r); err != nil {
return res, errors.Wrap(err, "encode request")
}
2022-08-31 06:18:14 +00:00
2022-08-31 07:49:08 +00:00
stage = "SendRequest"
2022-08-31 06:18:14 +00:00
resp, err := c.cfg.Client.Do(r)
if err != nil {
return res, errors.Wrap(err, "do request")
}
defer resp.Body.Close()
2022-08-31 07:49:08 +00:00
stage = "DecodeResponse"
result, err := decodeUpdateUserResponse(resp)
2022-08-31 06:18:14 +00:00
if err != nil {
return res, errors.Wrap(err, "decode response")
}
return result, nil
}