391 lines
10 KiB
Go
391 lines
10 KiB
Go
// 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
|
|
)
|
|
|
|
// HandleCreateUsersRequest handles createUsers operation.
|
|
//
|
|
// POST /users
|
|
func (s *Server) handleCreateUsersRequest(args [0]string, w http.ResponseWriter, r *http.Request) {
|
|
startTime := time.Now()
|
|
otelAttrs := []attribute.KeyValue{
|
|
otelogen.OperationID("createUsers"),
|
|
}
|
|
ctx, span := s.cfg.Tracer.Start(r.Context(), "CreateUsers",
|
|
trace.WithAttributes(otelAttrs...),
|
|
trace.WithSpanKind(trace.SpanKindServer),
|
|
)
|
|
s.requests.Add(ctx, 1, otelAttrs...)
|
|
defer span.End()
|
|
|
|
var err error
|
|
request, err := decodeCreateUsersRequest(r, span)
|
|
if err != nil {
|
|
s.badRequest(ctx, w, span, otelAttrs, err)
|
|
return
|
|
}
|
|
|
|
response, err := s.h.CreateUsers(ctx, request)
|
|
if err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Internal")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
respondError(w, http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
|
|
if err := encodeCreateUsersResponse(response, w, span); err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Response")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
return
|
|
}
|
|
span.SetStatus(codes.Ok, "Ok")
|
|
elapsedDuration := time.Since(startTime)
|
|
s.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
|
|
}
|
|
|
|
// HandleDeleteUsersRequest handles deleteUsers operation.
|
|
//
|
|
// DELETE /users/{id}
|
|
func (s *Server) handleDeleteUsersRequest(args [1]string, w http.ResponseWriter, r *http.Request) {
|
|
startTime := time.Now()
|
|
otelAttrs := []attribute.KeyValue{
|
|
otelogen.OperationID("deleteUsers"),
|
|
}
|
|
ctx, span := s.cfg.Tracer.Start(r.Context(), "DeleteUsers",
|
|
trace.WithAttributes(otelAttrs...),
|
|
trace.WithSpanKind(trace.SpanKindServer),
|
|
)
|
|
s.requests.Add(ctx, 1, otelAttrs...)
|
|
defer span.End()
|
|
|
|
var err error
|
|
params, err := decodeDeleteUsersParams(args, r)
|
|
if err != nil {
|
|
s.badRequest(ctx, w, span, otelAttrs, err)
|
|
return
|
|
}
|
|
|
|
response, err := s.h.DeleteUsers(ctx, params)
|
|
if err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Internal")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
respondError(w, http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
|
|
if err := encodeDeleteUsersResponse(response, w, span); err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Response")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
return
|
|
}
|
|
span.SetStatus(codes.Ok, "Ok")
|
|
elapsedDuration := time.Since(startTime)
|
|
s.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
|
|
}
|
|
|
|
// HandleDrawDoneRequest handles drawDone operation.
|
|
//
|
|
// PUT /users/{id}/d
|
|
func (s *Server) handleDrawDoneRequest(args [1]string, w http.ResponseWriter, r *http.Request) {
|
|
startTime := time.Now()
|
|
otelAttrs := []attribute.KeyValue{
|
|
otelogen.OperationID("drawDone"),
|
|
}
|
|
ctx, span := s.cfg.Tracer.Start(r.Context(), "DrawDone",
|
|
trace.WithAttributes(otelAttrs...),
|
|
trace.WithSpanKind(trace.SpanKindServer),
|
|
)
|
|
s.requests.Add(ctx, 1, otelAttrs...)
|
|
defer span.End()
|
|
|
|
var err error
|
|
params, err := decodeDrawDoneParams(args, r)
|
|
if err != nil {
|
|
s.badRequest(ctx, w, span, otelAttrs, err)
|
|
return
|
|
}
|
|
|
|
response, err := s.h.DrawDone(ctx, params)
|
|
if err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Internal")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
respondError(w, http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
|
|
if err := encodeDrawDoneResponse(response, w, span); err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Response")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
return
|
|
}
|
|
span.SetStatus(codes.Ok, "Ok")
|
|
elapsedDuration := time.Since(startTime)
|
|
s.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
|
|
}
|
|
|
|
// HandleDrawStartRequest handles drawStart operation.
|
|
//
|
|
// PATCH /users/{id}/start
|
|
func (s *Server) handleDrawStartRequest(args [1]string, w http.ResponseWriter, r *http.Request) {
|
|
startTime := time.Now()
|
|
otelAttrs := []attribute.KeyValue{
|
|
otelogen.OperationID("drawStart"),
|
|
}
|
|
ctx, span := s.cfg.Tracer.Start(r.Context(), "DrawStart",
|
|
trace.WithAttributes(otelAttrs...),
|
|
trace.WithSpanKind(trace.SpanKindServer),
|
|
)
|
|
s.requests.Add(ctx, 1, otelAttrs...)
|
|
defer span.End()
|
|
|
|
var err error
|
|
params, err := decodeDrawStartParams(args, r)
|
|
if err != nil {
|
|
s.badRequest(ctx, w, span, otelAttrs, err)
|
|
return
|
|
}
|
|
|
|
response, err := s.h.DrawStart(ctx, params)
|
|
if err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Internal")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
respondError(w, http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
|
|
if err := encodeDrawStartResponse(response, w, span); err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Response")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
return
|
|
}
|
|
span.SetStatus(codes.Ok, "Ok")
|
|
elapsedDuration := time.Since(startTime)
|
|
s.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
|
|
}
|
|
|
|
// HandleListUsersRequest handles listUsers operation.
|
|
//
|
|
// GET /users
|
|
func (s *Server) handleListUsersRequest(args [0]string, w http.ResponseWriter, r *http.Request) {
|
|
startTime := time.Now()
|
|
otelAttrs := []attribute.KeyValue{
|
|
otelogen.OperationID("listUsers"),
|
|
}
|
|
ctx, span := s.cfg.Tracer.Start(r.Context(), "ListUsers",
|
|
trace.WithAttributes(otelAttrs...),
|
|
trace.WithSpanKind(trace.SpanKindServer),
|
|
)
|
|
s.requests.Add(ctx, 1, otelAttrs...)
|
|
defer span.End()
|
|
|
|
var err error
|
|
params, err := decodeListUsersParams(args, r)
|
|
if err != nil {
|
|
s.badRequest(ctx, w, span, otelAttrs, err)
|
|
return
|
|
}
|
|
|
|
response, err := s.h.ListUsers(ctx, params)
|
|
if err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Internal")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
respondError(w, http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
|
|
if err := encodeListUsersResponse(response, w, span); err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Response")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
return
|
|
}
|
|
span.SetStatus(codes.Ok, "Ok")
|
|
elapsedDuration := time.Since(startTime)
|
|
s.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
|
|
}
|
|
|
|
// HandleReadUsersRequest handles readUsers operation.
|
|
//
|
|
// GET /users/{id}
|
|
func (s *Server) handleReadUsersRequest(args [1]string, w http.ResponseWriter, r *http.Request) {
|
|
startTime := time.Now()
|
|
otelAttrs := []attribute.KeyValue{
|
|
otelogen.OperationID("readUsers"),
|
|
}
|
|
ctx, span := s.cfg.Tracer.Start(r.Context(), "ReadUsers",
|
|
trace.WithAttributes(otelAttrs...),
|
|
trace.WithSpanKind(trace.SpanKindServer),
|
|
)
|
|
s.requests.Add(ctx, 1, otelAttrs...)
|
|
defer span.End()
|
|
|
|
var err error
|
|
params, err := decodeReadUsersParams(args, r)
|
|
if err != nil {
|
|
s.badRequest(ctx, w, span, otelAttrs, err)
|
|
return
|
|
}
|
|
|
|
response, err := s.h.ReadUsers(ctx, params)
|
|
if err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Internal")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
respondError(w, http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
|
|
if err := encodeReadUsersResponse(response, w, span); err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Response")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
return
|
|
}
|
|
span.SetStatus(codes.Ok, "Ok")
|
|
elapsedDuration := time.Since(startTime)
|
|
s.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
|
|
}
|
|
|
|
// HandleUpdateUsersRequest handles updateUsers operation.
|
|
//
|
|
// PATCH /users/{id}
|
|
func (s *Server) handleUpdateUsersRequest(args [1]string, w http.ResponseWriter, r *http.Request) {
|
|
startTime := time.Now()
|
|
otelAttrs := []attribute.KeyValue{
|
|
otelogen.OperationID("updateUsers"),
|
|
}
|
|
ctx, span := s.cfg.Tracer.Start(r.Context(), "UpdateUsers",
|
|
trace.WithAttributes(otelAttrs...),
|
|
trace.WithSpanKind(trace.SpanKindServer),
|
|
)
|
|
s.requests.Add(ctx, 1, otelAttrs...)
|
|
defer span.End()
|
|
|
|
var err error
|
|
params, err := decodeUpdateUsersParams(args, r)
|
|
if err != nil {
|
|
s.badRequest(ctx, w, span, otelAttrs, err)
|
|
return
|
|
}
|
|
request, err := decodeUpdateUsersRequest(r, span)
|
|
if err != nil {
|
|
s.badRequest(ctx, w, span, otelAttrs, err)
|
|
return
|
|
}
|
|
|
|
response, err := s.h.UpdateUsers(ctx, request, params)
|
|
if err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Internal")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
respondError(w, http.StatusInternalServerError, err)
|
|
return
|
|
}
|
|
|
|
if err := encodeUpdateUsersResponse(response, w, span); err != nil {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "Response")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
return
|
|
}
|
|
span.SetStatus(codes.Ok, "Ok")
|
|
elapsedDuration := time.Since(startTime)
|
|
s.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...)
|
|
}
|
|
|
|
func (s *Server) badRequest(ctx context.Context, w http.ResponseWriter, span trace.Span, otelAttrs []attribute.KeyValue, err error) {
|
|
span.RecordError(err)
|
|
span.SetStatus(codes.Error, "BadRequest")
|
|
s.errors.Add(ctx, 1, otelAttrs...)
|
|
respondError(w, http.StatusBadRequest, err)
|
|
}
|
|
|
|
func respondError(w http.ResponseWriter, code int, err error) {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(code)
|
|
data, writeErr := json.Marshal(struct {
|
|
ErrorMessage string `json:"error_message"`
|
|
}{
|
|
ErrorMessage: err.Error(),
|
|
})
|
|
if writeErr == nil {
|
|
w.Write(data)
|
|
}
|
|
}
|