// Code generated by ogen, DO NOT EDIT. package ogent import ( "context" "net/http" "time" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" semconv "go.opentelemetry.io/otel/semconv/v1.17.0" "go.opentelemetry.io/otel/trace" "github.com/ogen-go/ogen/middleware" "github.com/ogen-go/ogen/ogenerrors" "github.com/ogen-go/ogen/otelogen" ) // handleCreatePasswordTokenRequest handles createPasswordToken operation. // // Creates a new PasswordToken and persists it to storage. // // POST /password-tokens func (s *Server) handleCreatePasswordTokenRequest(args [0]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("createPasswordToken"), semconv.HTTPMethodKey.String("POST"), semconv.HTTPRouteKey.String("/password-tokens"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "CreatePasswordToken", 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: "CreatePasswordToken", ID: "createPasswordToken", } ) request, close, err := s.decodeCreatePasswordTokenRequest(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 CreatePasswordTokenRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "CreatePasswordToken", OperationID: "createPasswordToken", Body: request, Params: middleware.Parameters{}, Raw: r, } type ( Request = *CreatePasswordTokenReq Params = struct{} Response = CreatePasswordTokenRes ) 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.CreatePasswordToken(ctx, request) return response, err }, ) } else { response, err = s.h.CreatePasswordToken(ctx, request) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeCreatePasswordTokenResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleCreateUserRequest handles createUser operation. // // Creates a new User and persists it to storage. // // POST /users func (s *Server) handleCreateUserRequest(args [0]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("createUser"), semconv.HTTPMethodKey.String("POST"), semconv.HTTPRouteKey.String("/users"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "CreateUser", 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: "CreateUser", ID: "createUser", } ) request, close, err := s.decodeCreateUserRequest(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 CreateUserRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "CreateUser", OperationID: "createUser", Body: request, Params: middleware.Parameters{}, Raw: r, } type ( Request = *CreateUserReq Params = struct{} Response = CreateUserRes ) 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.CreateUser(ctx, request) return response, err }, ) } else { response, err = s.h.CreateUser(ctx, request) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeCreateUserResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleDeletePasswordTokenRequest handles deletePasswordToken operation. // // Deletes the PasswordToken with the requested ID. // // DELETE /password-tokens/{id} func (s *Server) handleDeletePasswordTokenRequest(args [1]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("deletePasswordToken"), semconv.HTTPMethodKey.String("DELETE"), semconv.HTTPRouteKey.String("/password-tokens/{id}"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "DeletePasswordToken", 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: "DeletePasswordToken", ID: "deletePasswordToken", } ) params, err := decodeDeletePasswordTokenParams(args, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } var response DeletePasswordTokenRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "DeletePasswordToken", OperationID: "deletePasswordToken", Body: nil, Params: middleware.Parameters{ { Name: "id", In: "path", }: params.ID, }, Raw: r, } type ( Request = struct{} Params = DeletePasswordTokenParams Response = DeletePasswordTokenRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackDeletePasswordTokenParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.DeletePasswordToken(ctx, params) return response, err }, ) } else { response, err = s.h.DeletePasswordToken(ctx, params) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeDeletePasswordTokenResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleDeleteUserRequest handles deleteUser operation. // // Deletes the User with the requested ID. // // DELETE /users/{id} func (s *Server) handleDeleteUserRequest(args [1]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("deleteUser"), semconv.HTTPMethodKey.String("DELETE"), semconv.HTTPRouteKey.String("/users/{id}"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "DeleteUser", 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: "DeleteUser", ID: "deleteUser", } ) params, err := decodeDeleteUserParams(args, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } var response DeleteUserRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "DeleteUser", OperationID: "deleteUser", Body: nil, Params: middleware.Parameters{ { Name: "id", In: "path", }: params.ID, }, Raw: r, } type ( Request = struct{} Params = DeleteUserParams Response = DeleteUserRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackDeleteUserParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.DeleteUser(ctx, params) return response, err }, ) } else { response, err = s.h.DeleteUser(ctx, params) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeDeleteUserResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleListPasswordTokenRequest handles listPasswordToken operation. // // List PasswordTokens. // // GET /password-tokens func (s *Server) handleListPasswordTokenRequest(args [0]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("listPasswordToken"), semconv.HTTPMethodKey.String("GET"), semconv.HTTPRouteKey.String("/password-tokens"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "ListPasswordToken", 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: "ListPasswordToken", ID: "listPasswordToken", } ) params, err := decodeListPasswordTokenParams(args, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } var response ListPasswordTokenRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "ListPasswordToken", OperationID: "listPasswordToken", Body: nil, Params: middleware.Parameters{ { Name: "page", In: "query", }: params.Page, { Name: "itemsPerPage", In: "query", }: params.ItemsPerPage, }, Raw: r, } type ( Request = struct{} Params = ListPasswordTokenParams Response = ListPasswordTokenRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackListPasswordTokenParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.ListPasswordToken(ctx, params) return response, err }, ) } else { response, err = s.h.ListPasswordToken(ctx, params) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeListPasswordTokenResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleListUserRequest handles listUser operation. // // List Users. // // GET /users func (s *Server) handleListUserRequest(args [0]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("listUser"), semconv.HTTPMethodKey.String("GET"), semconv.HTTPRouteKey.String("/users"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "ListUser", 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: "ListUser", ID: "listUser", } ) params, err := decodeListUserParams(args, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } var response ListUserRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "ListUser", OperationID: "listUser", Body: nil, Params: middleware.Parameters{ { Name: "page", In: "query", }: params.Page, { Name: "itemsPerPage", In: "query", }: params.ItemsPerPage, }, Raw: r, } type ( Request = struct{} Params = ListUserParams Response = ListUserRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackListUserParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.ListUser(ctx, params) return response, err }, ) } else { response, err = s.h.ListUser(ctx, params) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeListUserResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleListUserOwnerRequest handles listUserOwner operation. // // List attached Owners. // // GET /users/{id}/owner func (s *Server) handleListUserOwnerRequest(args [1]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("listUserOwner"), semconv.HTTPMethodKey.String("GET"), semconv.HTTPRouteKey.String("/users/{id}/owner"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "ListUserOwner", 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: "ListUserOwner", ID: "listUserOwner", } ) params, err := decodeListUserOwnerParams(args, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } var response ListUserOwnerRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "ListUserOwner", OperationID: "listUserOwner", Body: nil, Params: middleware.Parameters{ { Name: "id", In: "path", }: params.ID, { Name: "page", In: "query", }: params.Page, { Name: "itemsPerPage", In: "query", }: params.ItemsPerPage, }, Raw: r, } type ( Request = struct{} Params = ListUserOwnerParams Response = ListUserOwnerRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackListUserOwnerParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.ListUserOwner(ctx, params) return response, err }, ) } else { response, err = s.h.ListUserOwner(ctx, params) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeListUserOwnerResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleReadPasswordTokenRequest handles readPasswordToken operation. // // Finds the PasswordToken with the requested ID and returns it. // // GET /password-tokens/{id} func (s *Server) handleReadPasswordTokenRequest(args [1]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("readPasswordToken"), semconv.HTTPMethodKey.String("GET"), semconv.HTTPRouteKey.String("/password-tokens/{id}"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "ReadPasswordToken", 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: "ReadPasswordToken", ID: "readPasswordToken", } ) params, err := decodeReadPasswordTokenParams(args, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } var response ReadPasswordTokenRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "ReadPasswordToken", OperationID: "readPasswordToken", Body: nil, Params: middleware.Parameters{ { Name: "id", In: "path", }: params.ID, }, Raw: r, } type ( Request = struct{} Params = ReadPasswordTokenParams Response = ReadPasswordTokenRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackReadPasswordTokenParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.ReadPasswordToken(ctx, params) return response, err }, ) } else { response, err = s.h.ReadPasswordToken(ctx, params) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeReadPasswordTokenResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleReadPasswordTokenUserRequest handles readPasswordTokenUser operation. // // Find the attached User of the PasswordToken with the given ID. // // GET /password-tokens/{id}/user func (s *Server) handleReadPasswordTokenUserRequest(args [1]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("readPasswordTokenUser"), semconv.HTTPMethodKey.String("GET"), semconv.HTTPRouteKey.String("/password-tokens/{id}/user"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "ReadPasswordTokenUser", 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: "ReadPasswordTokenUser", ID: "readPasswordTokenUser", } ) params, err := decodeReadPasswordTokenUserParams(args, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } var response ReadPasswordTokenUserRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "ReadPasswordTokenUser", OperationID: "readPasswordTokenUser", Body: nil, Params: middleware.Parameters{ { Name: "id", In: "path", }: params.ID, }, Raw: r, } type ( Request = struct{} Params = ReadPasswordTokenUserParams Response = ReadPasswordTokenUserRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackReadPasswordTokenUserParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.ReadPasswordTokenUser(ctx, params) return response, err }, ) } else { response, err = s.h.ReadPasswordTokenUser(ctx, params) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeReadPasswordTokenUserResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleReadUserRequest handles readUser operation. // // Finds the User with the requested ID and returns it. // // GET /users/{id} func (s *Server) handleReadUserRequest(args [1]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("readUser"), semconv.HTTPMethodKey.String("GET"), semconv.HTTPRouteKey.String("/users/{id}"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "ReadUser", 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: "ReadUser", ID: "readUser", } ) params, err := decodeReadUserParams(args, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } var response ReadUserRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "ReadUser", OperationID: "readUser", Body: nil, Params: middleware.Parameters{ { Name: "id", In: "path", }: params.ID, }, Raw: r, } type ( Request = struct{} Params = ReadUserParams Response = ReadUserRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackReadUserParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.ReadUser(ctx, params) return response, err }, ) } else { response, err = s.h.ReadUser(ctx, params) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeReadUserResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleUpdatePasswordTokenRequest handles updatePasswordToken operation. // // Updates a PasswordToken and persists changes to storage. // // PATCH /password-tokens/{id} func (s *Server) handleUpdatePasswordTokenRequest(args [1]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("updatePasswordToken"), semconv.HTTPMethodKey.String("PATCH"), semconv.HTTPRouteKey.String("/password-tokens/{id}"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "UpdatePasswordToken", 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: "UpdatePasswordToken", ID: "updatePasswordToken", } ) params, err := decodeUpdatePasswordTokenParams(args, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } request, close, err := s.decodeUpdatePasswordTokenRequest(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 UpdatePasswordTokenRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "UpdatePasswordToken", OperationID: "updatePasswordToken", Body: request, Params: middleware.Parameters{ { Name: "id", In: "path", }: params.ID, }, Raw: r, } type ( Request = *UpdatePasswordTokenReq Params = UpdatePasswordTokenParams Response = UpdatePasswordTokenRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackUpdatePasswordTokenParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.UpdatePasswordToken(ctx, request, params) return response, err }, ) } else { response, err = s.h.UpdatePasswordToken(ctx, request, params) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeUpdatePasswordTokenResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } } // handleUpdateUserRequest handles updateUser operation. // // Updates a User and persists changes to storage. // // PATCH /users/{id} func (s *Server) handleUpdateUserRequest(args [1]string, w http.ResponseWriter, r *http.Request) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("updateUser"), semconv.HTTPMethodKey.String("PATCH"), semconv.HTTPRouteKey.String("/users/{id}"), } // Start a span for this request. ctx, span := s.cfg.Tracer.Start(r.Context(), "UpdateUser", 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: "UpdateUser", ID: "updateUser", } ) params, err := decodeUpdateUserParams(args, r) if err != nil { err = &ogenerrors.DecodeParamsError{ OperationContext: opErrContext, Err: err, } recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } request, close, err := s.decodeUpdateUserRequest(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 UpdateUserRes if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, OperationName: "UpdateUser", OperationID: "updateUser", Body: request, Params: middleware.Parameters{ { Name: "id", In: "path", }: params.ID, }, Raw: r, } type ( Request = *UpdateUserReq Params = UpdateUserParams Response = UpdateUserRes ) response, err = middleware.HookMiddleware[ Request, Params, Response, ]( m, mreq, unpackUpdateUserParams, func(ctx context.Context, request Request, params Params) (response Response, err error) { response, err = s.h.UpdateUser(ctx, request, params) return response, err }, ) } else { response, err = s.h.UpdateUser(ctx, request, params) } if err != nil { recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeUpdateUserResponse(response, w, span); err != nil { recordError("EncodeResponse", err) s.cfg.ErrorHandler(ctx, w, r, err) return } }