// 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 ) // Handler handles operations described by OpenAPI v3 specification. type Handler interface { // CreateUsers implements createUsers operation. // // Creates a new Users and persists it to storage. // // POST /users CreateUsers(ctx context.Context, req CreateUsersReq) (CreateUsersRes, error) // DeleteUsers implements deleteUsers operation. // // Deletes the Users with the requested ID. // // DELETE /users/{id} DeleteUsers(ctx context.Context, params DeleteUsersParams) (DeleteUsersRes, error) // DrawDone implements drawDone operation. // // PUT /users/{id}/d DrawDone(ctx context.Context, params DrawDoneParams) (DrawDoneNoContent, error) // DrawStart implements drawStart operation. // // PATCH /users/{id}/start DrawStart(ctx context.Context, params DrawStartParams) (DrawStartNoContent, error) // ListUsers implements listUsers operation. // // List Users. // // GET /users ListUsers(ctx context.Context, params ListUsersParams) (ListUsersRes, error) // ReadUsers implements readUsers operation. // // Finds the Users with the requested ID and returns it. // // GET /users/{id} ReadUsers(ctx context.Context, params ReadUsersParams) (ReadUsersRes, error) // UpdateUsers implements updateUsers operation. // // Updates a Users and persists changes to storage. // // PATCH /users/{id} UpdateUsers(ctx context.Context, req UpdateUsersReq, params UpdateUsersParams) (UpdateUsersRes, error) } // Server implements http server based on OpenAPI v3 specification and // calls Handler to handle requests. type Server struct { h Handler cfg config requests metric.Int64Counter errors metric.Int64Counter duration metric.Int64Histogram } func NewServer(h Handler, opts ...Option) (*Server, error) { s := &Server{ h: h, cfg: newConfig(opts...), } var err error if s.requests, err = s.cfg.Meter.NewInt64Counter(otelogen.ServerRequestCount); err != nil { return nil, err } if s.errors, err = s.cfg.Meter.NewInt64Counter(otelogen.ServerErrorsCount); err != nil { return nil, err } if s.duration, err = s.cfg.Meter.NewInt64Histogram(otelogen.ServerDuration); err != nil { return nil, err } return s, nil }