1
0
api/ent/ogent/oas_handlers_gen.go

391 lines
10 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
)
// 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)
}
}