// 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) } }