// Code generated by ogen, DO NOT EDIT. package openapi import ( "context" "net/http" "time" "github.com/go-faster/errors" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" semconv "go.opentelemetry.io/otel/semconv/v1.17.0" "go.opentelemetry.io/otel/trace" ht "github.com/ogen-go/ogen/http" "github.com/ogen-go/ogen/middleware" "github.com/ogen-go/ogen/ogenerrors" "github.com/ogen-go/ogen/otelogen" ) // handleAddPageRequest handles addPage operation. // // Add new page. // // POST /pages func (s *Server) handleAddPageRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("addPage"), semconv.HTTPMethodKey.String("POST"), semconv.HTTPRouteKey.String("/pages"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "AddPage", trace.WithAttributes(otelAttrs...), serverSpanKind, ) defer span.End() // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) s.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...) }() // Increment request counter. s.requests.Add(ctx, 1, otelAttrs...) var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) s.errors.Add(ctx, 1, otelAttrs...) } err error opErrContext = ogenerrors.OperationContext{ Name: "AddPage", ID: "addPage", } ) request, close, err := s.decodeAddPageRequest(r) if err != nil { err = &ogenerrors.DecodeRequestError{ OperationContext: opErrContext, Err: err, } recordError("DecodeRequest", err) s.cfg.ErrorHandler(ctx, w, r, err) return } defer func() { if err := close(); err != nil { recordError("CloseRequest", err) } }() var response *Page if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "AddPage", OperationID: "addPage", Body: request, Params: middleware.Parameters{}, Raw: r, } type ( Request = OptAddPageReq Params = struct{} Response = *Page ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, nil, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.AddPage(ctx, request) return response, err }, ) } else { response, err = s.h.AddPage(ctx, request) } if err != nil { recordError("Internal", err) if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { encodeErrorResponse(errRes, w, span) return } if errors.Is(err, ht.ErrNotImplemented) { s.cfg.ErrorHandler(ctx, w, r, err) return } encodeErrorResponse(s.h.NewError(ctx, err), w, span) return } if err := encodeAddPageResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleGetFileRequest handles getFile operation. // // Get file content. // // GET /pages/{id}/file/{file_id} func (s *Server) handleGetFileRequest(args [2]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("getFile"), semconv.HTTPMethodKey.String("GET"), semconv.HTTPRouteKey.String("/pages/{id}/file/{file_id}"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "GetFile", trace.WithAttributes(otelAttrs...), serverSpanKind, ) defer span.End() // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) s.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...) }() // Increment request counter. s.requests.Add(ctx, 1, otelAttrs...) var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) s.errors.Add(ctx, 1, otelAttrs...) } err error opErrContext = ogenerrors.OperationContext{ Name: "GetFile", ID: "getFile", } ) params, err := decodeGetFileParams(args, argsEscaped, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } var response GetFileRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "GetFile", OperationID: "getFile", Body: nil, Params: middleware.Parameters{ { Name: "id", In: "path", }: params.ID, { Name: "file_id", In: "path", }: params.FileID, }, Raw: r, } type ( Request = struct{} Params = GetFileParams Response = GetFileRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackGetFileParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.GetFile(ctx, params) return response, err }, ) } else { response, err = s.h.GetFile(ctx, params) } if err != nil { recordError("Internal", err) if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { encodeErrorResponse(errRes, w, span) return } if errors.Is(err, ht.ErrNotImplemented) { s.cfg.ErrorHandler(ctx, w, r, err) return } encodeErrorResponse(s.h.NewError(ctx, err), w, span) return } if err := encodeGetFileResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleGetPageRequest handles getPage operation. // // Get page details. // // GET /pages/{id} func (s *Server) handleGetPageRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("getPage"), semconv.HTTPMethodKey.String("GET"), semconv.HTTPRouteKey.String("/pages/{id}"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "GetPage", trace.WithAttributes(otelAttrs...), serverSpanKind, ) defer span.End() // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) s.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...) }() // Increment request counter. s.requests.Add(ctx, 1, otelAttrs...) var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) s.errors.Add(ctx, 1, otelAttrs...) } err error opErrContext = ogenerrors.OperationContext{ Name: "GetPage", ID: "getPage", } ) params, err := decodeGetPageParams(args, argsEscaped, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } var response GetPageRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "GetPage", OperationID: "getPage", Body: nil, Params: middleware.Parameters{ { Name: "id", In: "path", }: params.ID, }, Raw: r, } type ( Request = struct{} Params = GetPageParams Response = GetPageRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackGetPageParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.GetPage(ctx, params) return response, err }, ) } else { response, err = s.h.GetPage(ctx, params) } if err != nil { recordError("Internal", err) if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { encodeErrorResponse(errRes, w, span) return } if errors.Is(err, ht.ErrNotImplemented) { s.cfg.ErrorHandler(ctx, w, r, err) return } encodeErrorResponse(s.h.NewError(ctx, err), w, span) return } if err := encodeGetPageResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleGetPagesRequest handles getPages operation. // // Get all pages. // // GET /pages func (s *Server) handleGetPagesRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("getPages"), semconv.HTTPMethodKey.String("GET"), semconv.HTTPRouteKey.String("/pages"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "GetPages", trace.WithAttributes(otelAttrs...), serverSpanKind, ) defer span.End() // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) s.duration.Record(ctx, elapsedDuration.Microseconds(), otelAttrs...) }() // Increment request counter. s.requests.Add(ctx, 1, otelAttrs...) var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) s.errors.Add(ctx, 1, otelAttrs...) } err error ) var response Pages if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "GetPages", OperationID: "getPages", Body: nil, Params: middleware.Parameters{}, Raw: r, } type ( Request = struct{} Params = struct{} Response = Pages ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, nil, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.GetPages(ctx) return response, err }, ) } else { response, err = s.h.GetPages(ctx) } if err != nil { recordError("Internal", err) if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { encodeErrorResponse(errRes, w, span) return } if errors.Is(err, ht.ErrNotImplemented) { s.cfg.ErrorHandler(ctx, w, r, err) return } encodeErrorResponse(s.h.NewError(ctx, err), w, span) return } if err := encodeGetPagesResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } }