diff --git a/api/oas_cfg_gen.go b/api/oas_cfg_gen.go index 754314e..1c13bfb 100644 --- a/api/oas_cfg_gen.go +++ b/api/oas_cfg_gen.go @@ -49,7 +49,9 @@ func (cfg *otelConfig) initOTEL() { cfg.Tracer = cfg.TracerProvider.Tracer(otelogen.Name, trace.WithInstrumentationVersion(otelogen.SemVersion()), ) - cfg.Meter = cfg.MeterProvider.Meter(otelogen.Name) + cfg.Meter = cfg.MeterProvider.Meter(otelogen.Name, + metric.WithInstrumentationVersion(otelogen.SemVersion()), + ) } // ErrorHandler is error handler. @@ -124,13 +126,13 @@ func (s baseServer) notAllowed(w http.ResponseWriter, r *http.Request, allowed s func (cfg serverConfig) baseServer() (s baseServer, err error) { s = baseServer{cfg: cfg} - if s.requests, err = s.cfg.Meter.Int64Counter(otelogen.ServerRequestCount); err != nil { + if s.requests, err = otelogen.ServerRequestCountCounter(s.cfg.Meter); err != nil { return s, err } - if s.errors, err = s.cfg.Meter.Int64Counter(otelogen.ServerErrorsCount); err != nil { + if s.errors, err = otelogen.ServerErrorsCountCounter(s.cfg.Meter); err != nil { return s, err } - if s.duration, err = s.cfg.Meter.Float64Histogram(otelogen.ServerDuration); err != nil { + if s.duration, err = otelogen.ServerDurationHistogram(s.cfg.Meter); err != nil { return s, err } return s, nil @@ -178,13 +180,13 @@ type baseClient struct { func (cfg clientConfig) baseClient() (c baseClient, err error) { c = baseClient{cfg: cfg} - if c.requests, err = c.cfg.Meter.Int64Counter(otelogen.ClientRequestCount); err != nil { + if c.requests, err = otelogen.ClientRequestCountCounter(c.cfg.Meter); err != nil { return c, err } - if c.errors, err = c.cfg.Meter.Int64Counter(otelogen.ClientErrorsCount); err != nil { + if c.errors, err = otelogen.ClientErrorsCountCounter(c.cfg.Meter); err != nil { return c, err } - if c.duration, err = c.cfg.Meter.Float64Histogram(otelogen.ClientDuration); err != nil { + if c.duration, err = otelogen.ClientDurationHistogram(c.cfg.Meter); err != nil { return c, err } return c, nil diff --git a/api/oas_client_gen.go b/api/oas_client_gen.go index 7ec627a..2d453f1 100644 --- a/api/oas_client_gen.go +++ b/api/oas_client_gen.go @@ -47,6 +47,10 @@ type Invoker interface { // // POST /customers CustomersPost(ctx context.Context, request *CustomersPostReq) (CustomersPostRes, error) + // PaymentsGet invokes GET /payments operation. + // + // GET /payments + PaymentsGet(ctx context.Context, params PaymentsGetParams) (PaymentsGetRes, error) // PaymentsIDPut invokes PUT /payments/{id} operation. // // PUT /payments/{id} @@ -854,6 +858,415 @@ func (c *Client) sendCustomersPost(ctx context.Context, request *CustomersPostRe return result, nil } +// PaymentsGet invokes GET /payments operation. +// +// GET /payments +func (c *Client) PaymentsGet(ctx context.Context, params PaymentsGetParams) (PaymentsGetRes, error) { + res, err := c.sendPaymentsGet(ctx, params) + return res, err +} + +func (c *Client) sendPaymentsGet(ctx context.Context, params PaymentsGetParams) (res PaymentsGetRes, err error) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/payments"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "PaymentsGet", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/payments" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeQueryParams" + q := uri.NewQueryEncoder() + { + // Encode "limit" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Limit.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "page" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "page", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Page.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "count_only" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "count_only", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.CountOnly.Get(); ok { + return e.EncodeValue(conv.BoolToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "sort" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "sort", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Sort.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "pay_type" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "pay_type", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + return e.EncodeValue(conv.StringToString(params.PayType)) + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "keyword" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "keyword", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Keyword.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "total_amount_min" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "total_amount_min", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.TotalAmountMin.Get(); ok { + return e.EncodeValue(conv.IntToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "total_amount_max" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "total_amount_max", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.TotalAmountMax.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "customer_id" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "customer_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.CustomerID.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "process_data_from" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "process_data_from", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.ProcessDataFrom.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "process_data_to" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "process_data_to", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.ProcessDataTo.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "auth_max_date_from" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "auth_max_date_from", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.AuthMaxDateFrom.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "auth_max_date_to" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "auth_max_date_to", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.AuthMaxDateTo.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "update_date_from" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "update_date_from", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.UpdateDateFrom.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "update_date_to" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "update_date_to", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.UpdateDateTo.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "status" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "status", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.Status.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "pay_pattern" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "pay_pattern", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.PayPattern.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + { + // Encode "subscription_id" parameter. + cfg := uri.QueryParameterEncodingConfig{ + Name: "subscription_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.EncodeParam(cfg, func(e uri.Encoder) error { + if val, ok := params.SubscriptionID.Get(); ok { + return e.EncodeValue(conv.StringToString(val)) + } + return nil + }); err != nil { + return res, errors.Wrap(err, "encode query") + } + } + u.RawQuery = q.Values().Encode() + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:BearerAuth" + switch err := c.securityBearerAuth(ctx, "PaymentsGet", r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"BearerAuth\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodePaymentsGetResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + // PaymentsIDPut invokes PUT /payments/{id} operation. // // PUT /payments/{id} diff --git a/api/oas_handlers_gen.go b/api/oas_handlers_gen.go index 0bf8b89..8e39f30 100644 --- a/api/oas_handlers_gen.go +++ b/api/oas_handlers_gen.go @@ -35,22 +35,28 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPaymentMethodIDDeleteReq ) defer span.End() + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) }() - // Increment request counter. - s.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) - s.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) } err error opErrContext = ogenerrors.OperationContext{ @@ -69,7 +75,7 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPaymentMethodIDDeleteReq Security: "BearerAuth", Err: err, } - recordError("Security:BearerAuth", err) + defer recordError("Security:BearerAuth", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -97,7 +103,7 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPaymentMethodIDDeleteReq OperationContext: opErrContext, Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, } - recordError("Security", err) + defer recordError("Security", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -108,7 +114,7 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPaymentMethodIDDeleteReq OperationContext: opErrContext, Err: err, } - recordError("DecodeParams", err) + defer recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -156,13 +162,13 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPaymentMethodIDDeleteReq response, err = s.h.CustomersCustomerIDPaymentMethodsPaymentMethodIDDelete(ctx, params) } if err != nil { - recordError("Internal", err) + defer recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeCustomersCustomerIDPaymentMethodsPaymentMethodIDDeleteResponse(response, w, span); err != nil { - recordError("EncodeResponse", err) + defer recordError("EncodeResponse", err) if !errors.Is(err, ht.ErrInternalServerErrorResponse) { s.cfg.ErrorHandler(ctx, w, r, err) } @@ -186,22 +192,28 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPaymentMethodIDGetReques ) defer span.End() + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) }() - // Increment request counter. - s.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) - s.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) } err error opErrContext = ogenerrors.OperationContext{ @@ -220,7 +232,7 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPaymentMethodIDGetReques Security: "BearerAuth", Err: err, } - recordError("Security:BearerAuth", err) + defer recordError("Security:BearerAuth", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -248,7 +260,7 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPaymentMethodIDGetReques OperationContext: opErrContext, Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, } - recordError("Security", err) + defer recordError("Security", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -259,7 +271,7 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPaymentMethodIDGetReques OperationContext: opErrContext, Err: err, } - recordError("DecodeParams", err) + defer recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -307,13 +319,13 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPaymentMethodIDGetReques response, err = s.h.CustomersCustomerIDPaymentMethodsPaymentMethodIDGet(ctx, params) } if err != nil { - recordError("Internal", err) + defer recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeCustomersCustomerIDPaymentMethodsPaymentMethodIDGetResponse(response, w, span); err != nil { - recordError("EncodeResponse", err) + defer recordError("EncodeResponse", err) if !errors.Is(err, ht.ErrInternalServerErrorResponse) { s.cfg.ErrorHandler(ctx, w, r, err) } @@ -337,22 +349,28 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPostRequest(args [1]stri ) defer span.End() + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) }() - // Increment request counter. - s.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) - s.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) } err error opErrContext = ogenerrors.OperationContext{ @@ -371,7 +389,7 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPostRequest(args [1]stri Security: "BearerAuth", Err: err, } - recordError("Security:BearerAuth", err) + defer recordError("Security:BearerAuth", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -399,7 +417,7 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPostRequest(args [1]stri OperationContext: opErrContext, Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, } - recordError("Security", err) + defer recordError("Security", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -410,7 +428,7 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPostRequest(args [1]stri OperationContext: opErrContext, Err: err, } - recordError("DecodeParams", err) + defer recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -420,7 +438,7 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPostRequest(args [1]stri OperationContext: opErrContext, Err: err, } - recordError("DecodeRequest", err) + defer recordError("DecodeRequest", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -469,13 +487,13 @@ func (s *Server) handleCustomersCustomerIDPaymentMethodsPostRequest(args [1]stri response, err = s.h.CustomersCustomerIDPaymentMethodsPost(ctx, request, params) } if err != nil { - recordError("Internal", err) + defer recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeCustomersCustomerIDPaymentMethodsPostResponse(response, w, span); err != nil { - recordError("EncodeResponse", err) + defer recordError("EncodeResponse", err) if !errors.Is(err, ht.ErrInternalServerErrorResponse) { s.cfg.ErrorHandler(ctx, w, r, err) } @@ -499,22 +517,28 @@ func (s *Server) handleCustomersIDDeleteRequest(args [1]string, argsEscaped bool ) defer span.End() + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) }() - // Increment request counter. - s.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) - s.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) } err error opErrContext = ogenerrors.OperationContext{ @@ -533,7 +557,7 @@ func (s *Server) handleCustomersIDDeleteRequest(args [1]string, argsEscaped bool Security: "BearerAuth", Err: err, } - recordError("Security:BearerAuth", err) + defer recordError("Security:BearerAuth", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -561,7 +585,7 @@ func (s *Server) handleCustomersIDDeleteRequest(args [1]string, argsEscaped bool OperationContext: opErrContext, Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, } - recordError("Security", err) + defer recordError("Security", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -572,7 +596,7 @@ func (s *Server) handleCustomersIDDeleteRequest(args [1]string, argsEscaped bool OperationContext: opErrContext, Err: err, } - recordError("DecodeParams", err) + defer recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -616,13 +640,13 @@ func (s *Server) handleCustomersIDDeleteRequest(args [1]string, argsEscaped bool response, err = s.h.CustomersIDDelete(ctx, params) } if err != nil { - recordError("Internal", err) + defer recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeCustomersIDDeleteResponse(response, w, span); err != nil { - recordError("EncodeResponse", err) + defer recordError("EncodeResponse", err) if !errors.Is(err, ht.ErrInternalServerErrorResponse) { s.cfg.ErrorHandler(ctx, w, r, err) } @@ -646,22 +670,28 @@ func (s *Server) handleCustomersIDGetRequest(args [1]string, argsEscaped bool, w ) defer span.End() + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) }() - // Increment request counter. - s.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) - s.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) } err error opErrContext = ogenerrors.OperationContext{ @@ -680,7 +710,7 @@ func (s *Server) handleCustomersIDGetRequest(args [1]string, argsEscaped bool, w Security: "BearerAuth", Err: err, } - recordError("Security:BearerAuth", err) + defer recordError("Security:BearerAuth", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -708,7 +738,7 @@ func (s *Server) handleCustomersIDGetRequest(args [1]string, argsEscaped bool, w OperationContext: opErrContext, Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, } - recordError("Security", err) + defer recordError("Security", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -719,7 +749,7 @@ func (s *Server) handleCustomersIDGetRequest(args [1]string, argsEscaped bool, w OperationContext: opErrContext, Err: err, } - recordError("DecodeParams", err) + defer recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -763,13 +793,13 @@ func (s *Server) handleCustomersIDGetRequest(args [1]string, argsEscaped bool, w response, err = s.h.CustomersIDGet(ctx, params) } if err != nil { - recordError("Internal", err) + defer recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeCustomersIDGetResponse(response, w, span); err != nil { - recordError("EncodeResponse", err) + defer recordError("EncodeResponse", err) if !errors.Is(err, ht.ErrInternalServerErrorResponse) { s.cfg.ErrorHandler(ctx, w, r, err) } @@ -793,22 +823,28 @@ func (s *Server) handleCustomersPostRequest(args [0]string, argsEscaped bool, w ) defer span.End() + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) }() - // Increment request counter. - s.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) - s.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) } err error opErrContext = ogenerrors.OperationContext{ @@ -827,7 +863,7 @@ func (s *Server) handleCustomersPostRequest(args [0]string, argsEscaped bool, w Security: "BearerAuth", Err: err, } - recordError("Security:BearerAuth", err) + defer recordError("Security:BearerAuth", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -855,7 +891,7 @@ func (s *Server) handleCustomersPostRequest(args [0]string, argsEscaped bool, w OperationContext: opErrContext, Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, } - recordError("Security", err) + defer recordError("Security", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -866,7 +902,7 @@ func (s *Server) handleCustomersPostRequest(args [0]string, argsEscaped bool, w OperationContext: opErrContext, Err: err, } - recordError("DecodeRequest", err) + defer recordError("DecodeRequest", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -910,13 +946,234 @@ func (s *Server) handleCustomersPostRequest(args [0]string, argsEscaped bool, w response, err = s.h.CustomersPost(ctx, request) } if err != nil { - recordError("Internal", err) + defer recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodeCustomersPostResponse(response, w, span); err != nil { - recordError("EncodeResponse", err) + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handlePaymentsGetRequest handles GET /payments operation. +// +// GET /payments +func (s *Server) handlePaymentsGetRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + semconv.HTTPMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/payments"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "PaymentsGet", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + opErrContext = ogenerrors.OperationContext{ + Name: "PaymentsGet", + ID: "", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityBearerAuth(ctx, "PaymentsGet", r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "BearerAuth", + Err: err, + } + defer recordError("Security:BearerAuth", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + defer recordError("Security", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + } + params, err := decodePaymentsGetParams(args, argsEscaped, r) + if err != nil { + err = &ogenerrors.DecodeParamsError{ + OperationContext: opErrContext, + Err: err, + } + defer recordError("DecodeParams", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + var response PaymentsGetRes + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "PaymentsGet", + OperationSummary: "", + OperationID: "", + Body: nil, + Params: middleware.Parameters{ + { + Name: "limit", + In: "query", + }: params.Limit, + { + Name: "page", + In: "query", + }: params.Page, + { + Name: "count_only", + In: "query", + }: params.CountOnly, + { + Name: "sort", + In: "query", + }: params.Sort, + { + Name: "pay_type", + In: "query", + }: params.PayType, + { + Name: "keyword", + In: "query", + }: params.Keyword, + { + Name: "total_amount_min", + In: "query", + }: params.TotalAmountMin, + { + Name: "total_amount_max", + In: "query", + }: params.TotalAmountMax, + { + Name: "customer_id", + In: "query", + }: params.CustomerID, + { + Name: "process_data_from", + In: "query", + }: params.ProcessDataFrom, + { + Name: "process_data_to", + In: "query", + }: params.ProcessDataTo, + { + Name: "auth_max_date_from", + In: "query", + }: params.AuthMaxDateFrom, + { + Name: "auth_max_date_to", + In: "query", + }: params.AuthMaxDateTo, + { + Name: "update_date_from", + In: "query", + }: params.UpdateDateFrom, + { + Name: "update_date_to", + In: "query", + }: params.UpdateDateTo, + { + Name: "status", + In: "query", + }: params.Status, + { + Name: "pay_pattern", + In: "query", + }: params.PayPattern, + { + Name: "subscription_id", + In: "query", + }: params.SubscriptionID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = PaymentsGetParams + Response = PaymentsGetRes + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackPaymentsGetParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.PaymentsGet(ctx, params) + return response, err + }, + ) + } else { + response, err = s.h.PaymentsGet(ctx, params) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodePaymentsGetResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) if !errors.Is(err, ht.ErrInternalServerErrorResponse) { s.cfg.ErrorHandler(ctx, w, r, err) } @@ -940,22 +1197,28 @@ func (s *Server) handlePaymentsIDPutRequest(args [1]string, argsEscaped bool, w ) defer span.End() + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) }() - // Increment request counter. - s.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) - s.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) } err error opErrContext = ogenerrors.OperationContext{ @@ -974,7 +1237,7 @@ func (s *Server) handlePaymentsIDPutRequest(args [1]string, argsEscaped bool, w Security: "BearerAuth", Err: err, } - recordError("Security:BearerAuth", err) + defer recordError("Security:BearerAuth", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -1002,7 +1265,7 @@ func (s *Server) handlePaymentsIDPutRequest(args [1]string, argsEscaped bool, w OperationContext: opErrContext, Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, } - recordError("Security", err) + defer recordError("Security", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -1013,7 +1276,7 @@ func (s *Server) handlePaymentsIDPutRequest(args [1]string, argsEscaped bool, w OperationContext: opErrContext, Err: err, } - recordError("DecodeParams", err) + defer recordError("DecodeParams", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -1023,7 +1286,7 @@ func (s *Server) handlePaymentsIDPutRequest(args [1]string, argsEscaped bool, w OperationContext: opErrContext, Err: err, } - recordError("DecodeRequest", err) + defer recordError("DecodeRequest", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -1072,13 +1335,13 @@ func (s *Server) handlePaymentsIDPutRequest(args [1]string, argsEscaped bool, w response, err = s.h.PaymentsIDPut(ctx, request, params) } if err != nil { - recordError("Internal", err) + defer recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodePaymentsIDPutResponse(response, w, span); err != nil { - recordError("EncodeResponse", err) + defer recordError("EncodeResponse", err) if !errors.Is(err, ht.ErrInternalServerErrorResponse) { s.cfg.ErrorHandler(ctx, w, r, err) } @@ -1102,22 +1365,28 @@ func (s *Server) handlePaymentsPostRequest(args [0]string, argsEscaped bool, w h ) defer span.End() + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + // Run stopwatch. startTime := time.Now() defer func() { elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) }() - // Increment request counter. - s.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - var ( recordError = func(stage string, err error) { span.RecordError(err) span.SetStatus(codes.Error, stage) - s.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) } err error opErrContext = ogenerrors.OperationContext{ @@ -1136,7 +1405,7 @@ func (s *Server) handlePaymentsPostRequest(args [0]string, argsEscaped bool, w h Security: "BearerAuth", Err: err, } - recordError("Security:BearerAuth", err) + defer recordError("Security:BearerAuth", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -1164,7 +1433,7 @@ func (s *Server) handlePaymentsPostRequest(args [0]string, argsEscaped bool, w h OperationContext: opErrContext, Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, } - recordError("Security", err) + defer recordError("Security", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -1175,7 +1444,7 @@ func (s *Server) handlePaymentsPostRequest(args [0]string, argsEscaped bool, w h OperationContext: opErrContext, Err: err, } - recordError("DecodeRequest", err) + defer recordError("DecodeRequest", err) s.cfg.ErrorHandler(ctx, w, r, err) return } @@ -1219,13 +1488,13 @@ func (s *Server) handlePaymentsPostRequest(args [0]string, argsEscaped bool, w h response, err = s.h.PaymentsPost(ctx, request) } if err != nil { - recordError("Internal", err) + defer recordError("Internal", err) s.cfg.ErrorHandler(ctx, w, r, err) return } if err := encodePaymentsPostResponse(response, w, span); err != nil { - recordError("EncodeResponse", err) + defer recordError("EncodeResponse", err) if !errors.Is(err, ht.ErrInternalServerErrorResponse) { s.cfg.ErrorHandler(ctx, w, r, err) } diff --git a/api/oas_interfaces_gen.go b/api/oas_interfaces_gen.go index d2b133e..d7a5575 100644 --- a/api/oas_interfaces_gen.go +++ b/api/oas_interfaces_gen.go @@ -25,6 +25,10 @@ type CustomersPostRes interface { customersPostRes() } +type PaymentsGetRes interface { + paymentsGetRes() +} + type PaymentsIDPutRes interface { paymentsIDPutRes() } diff --git a/api/oas_json_gen.go b/api/oas_json_gen.go index 91af49d..940f212 100644 --- a/api/oas_json_gen.go +++ b/api/oas_json_gen.go @@ -14038,6 +14038,1045 @@ func (s *PaymentMethodDirectDebitResponseStatus) UnmarshalJSON(data []byte) erro return s.Decode(d) } +// Encode implements json.Marshaler. +func (s *PaymentsGetBadRequest) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *PaymentsGetBadRequest) encodeFields(e *jx.Encoder) { + { + if s.Errors != nil { + e.FieldStart("errors") + e.ArrStart() + for _, elem := range s.Errors { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfPaymentsGetBadRequest = [1]string{ + 0: "errors", +} + +// Decode decodes PaymentsGetBadRequest from json. +func (s *PaymentsGetBadRequest) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode PaymentsGetBadRequest to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "errors": + if err := func() error { + s.Errors = make([]PaymentsGetBadRequestErrorsItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem PaymentsGetBadRequestErrorsItem + if err := elem.Decode(d); err != nil { + return err + } + s.Errors = append(s.Errors, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"errors\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode PaymentsGetBadRequest") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *PaymentsGetBadRequest) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *PaymentsGetBadRequest) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *PaymentsGetBadRequestErrorsItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *PaymentsGetBadRequestErrorsItem) encodeFields(e *jx.Encoder) { + { + if s.ErrorCode.Set { + e.FieldStart("error_code") + s.ErrorCode.Encode(e) + } + } + { + if s.ErrorMessage.Set { + e.FieldStart("error_message") + s.ErrorMessage.Encode(e) + } + } +} + +var jsonFieldsNameOfPaymentsGetBadRequestErrorsItem = [2]string{ + 0: "error_code", + 1: "error_message", +} + +// Decode decodes PaymentsGetBadRequestErrorsItem from json. +func (s *PaymentsGetBadRequestErrorsItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode PaymentsGetBadRequestErrorsItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "error_code": + if err := func() error { + s.ErrorCode.Reset() + if err := s.ErrorCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error_code\"") + } + case "error_message": + if err := func() error { + s.ErrorMessage.Reset() + if err := s.ErrorMessage.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error_message\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode PaymentsGetBadRequestErrorsItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *PaymentsGetBadRequestErrorsItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *PaymentsGetBadRequestErrorsItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *PaymentsGetOK) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *PaymentsGetOK) encodeFields(e *jx.Encoder) { + { + if s.TotalCount.Set { + e.FieldStart("total_count") + s.TotalCount.Encode(e) + } + } + { + if s.LastPage.Set { + e.FieldStart("last_page") + s.LastPage.Encode(e) + } + } + { + if s.CurrentPage.Set { + e.FieldStart("current_page") + s.CurrentPage.Encode(e) + } + } + { + if s.Limit.Set { + e.FieldStart("limit") + s.Limit.Encode(e) + } + } + { + if s.LinkNext.Set { + e.FieldStart("link_next") + s.LinkNext.Encode(e) + } + } + { + if s.LinkPrevious.Set { + e.FieldStart("link_previous") + s.LinkPrevious.Encode(e) + } + } + { + if s.List != nil { + e.FieldStart("list") + e.ArrStart() + for _, elem := range s.List { + elem.Encode(e) + } + e.ArrEnd() + } + } +} + +var jsonFieldsNameOfPaymentsGetOK = [7]string{ + 0: "total_count", + 1: "last_page", + 2: "current_page", + 3: "limit", + 4: "link_next", + 5: "link_previous", + 6: "list", +} + +// Decode decodes PaymentsGetOK from json. +func (s *PaymentsGetOK) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode PaymentsGetOK to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "total_count": + if err := func() error { + s.TotalCount.Reset() + if err := s.TotalCount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"total_count\"") + } + case "last_page": + if err := func() error { + s.LastPage.Reset() + if err := s.LastPage.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"last_page\"") + } + case "current_page": + if err := func() error { + s.CurrentPage.Reset() + if err := s.CurrentPage.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"current_page\"") + } + case "limit": + if err := func() error { + s.Limit.Reset() + if err := s.Limit.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"limit\"") + } + case "link_next": + if err := func() error { + s.LinkNext.Reset() + if err := s.LinkNext.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"link_next\"") + } + case "link_previous": + if err := func() error { + s.LinkPrevious.Reset() + if err := s.LinkPrevious.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"link_previous\"") + } + case "list": + if err := func() error { + s.List = make([]PaymentsGetOKListItem, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem PaymentsGetOKListItem + if err := elem.Decode(d); err != nil { + return err + } + s.List = append(s.List, elem) + return nil + }); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"list\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode PaymentsGetOK") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *PaymentsGetOK) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *PaymentsGetOK) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s *PaymentsGetOKListItem) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields encodes fields. +func (s *PaymentsGetOKListItem) encodeFields(e *jx.Encoder) { + { + if s.ShopID.Set { + e.FieldStart("shop_id") + s.ShopID.Encode(e) + } + } + { + if s.ID.Set { + e.FieldStart("id") + s.ID.Encode(e) + } + } + { + if s.PayType.Set { + e.FieldStart("pay_type") + s.PayType.Encode(e) + } + } + { + if s.Status.Set { + e.FieldStart("status") + s.Status.Encode(e) + } + } + { + if s.AccessID.Set { + e.FieldStart("access_id") + s.AccessID.Encode(e) + } + } + { + if s.ProcessDate.Set { + e.FieldStart("process_date") + s.ProcessDate.Encode(e) + } + } + { + if s.JobCode.Set { + e.FieldStart("job_code") + s.JobCode.Encode(e) + } + } + { + if s.ItemCode.Set { + e.FieldStart("item_code") + s.ItemCode.Encode(e) + } + } + { + if s.Amount.Set { + e.FieldStart("amount") + s.Amount.Encode(e) + } + } + { + if s.Tax.Set { + e.FieldStart("tax") + s.Tax.Encode(e) + } + } + { + if s.TotalAmount.Set { + e.FieldStart("total_amount") + s.TotalAmount.Encode(e) + } + } + { + if s.CustomerGroupID.Set { + e.FieldStart("customer_group_id") + s.CustomerGroupID.Encode(e) + } + } + { + if s.CustomerID.Set { + e.FieldStart("customer_id") + s.CustomerID.Encode(e) + } + } + { + if s.CardNo.Set { + e.FieldStart("card_no") + s.CardNo.Encode(e) + } + } + { + if s.CardID.Set { + e.FieldStart("card_id") + s.CardID.Encode(e) + } + } + { + if s.Expire.Set { + e.FieldStart("expire") + s.Expire.Encode(e) + } + } + { + if s.HolderName.Set { + e.FieldStart("holder_name") + s.HolderName.Encode(e) + } + } + { + if s.CardNoHash.Set { + e.FieldStart("card_no_hash") + s.CardNoHash.Encode(e) + } + } + { + if s.Method.Set { + e.FieldStart("method") + s.Method.Encode(e) + } + } + { + if s.PayTimes.Set { + e.FieldStart("pay_times") + s.PayTimes.Encode(e) + } + } + { + if s.Forward.Set { + e.FieldStart("forward") + s.Forward.Encode(e) + } + } + { + if s.Issuer.Set { + e.FieldStart("issuer") + s.Issuer.Encode(e) + } + } + { + if s.TransactionID.Set { + e.FieldStart("transaction_id") + s.TransactionID.Encode(e) + } + } + { + if s.Approve.Set { + e.FieldStart("approve") + s.Approve.Encode(e) + } + } + { + if s.AuthMaxDate.Set { + e.FieldStart("auth_max_date") + s.AuthMaxDate.Encode(e) + } + } + { + if s.ClientField1.Set { + e.FieldStart("client_field_1") + s.ClientField1.Encode(e) + } + } + { + if s.ClientField2.Set { + e.FieldStart("client_field_2") + s.ClientField2.Encode(e) + } + } + { + if s.ClientField3.Set { + e.FieldStart("client_field_3") + s.ClientField3.Encode(e) + } + } + { + if s.TdsType.Set { + e.FieldStart("tds_type") + s.TdsType.Encode(e) + } + } + { + if s.Tds2Type.Set { + e.FieldStart("tds2_type") + s.Tds2Type.Encode(e) + } + } + { + if s.Tds2RetURL.Set { + e.FieldStart("tds2_ret_url") + s.Tds2RetURL.Encode(e) + } + } + { + if s.Tds2Status.Set { + e.FieldStart("tds2_status") + s.Tds2Status.Encode(e) + } + } + { + if s.MerchantName.Set { + e.FieldStart("merchant_name") + s.MerchantName.Encode(e) + } + } + { + if s.SendURL.Set { + e.FieldStart("send_url") + s.SendURL.Encode(e) + } + } + { + if s.SubscriptionID.Set { + e.FieldStart("subscription_id") + s.SubscriptionID.Encode(e) + } + } + { + if s.Brand.Set { + e.FieldStart("brand") + s.Brand.Encode(e) + } + } + { + if s.ErrorCode.Set { + e.FieldStart("error_code") + s.ErrorCode.Encode(e) + } + } + { + if s.Created.Set { + e.FieldStart("created") + s.Created.Encode(e) + } + } + { + if s.Updated.Set { + e.FieldStart("updated") + s.Updated.Encode(e) + } + } +} + +var jsonFieldsNameOfPaymentsGetOKListItem = [39]string{ + 0: "shop_id", + 1: "id", + 2: "pay_type", + 3: "status", + 4: "access_id", + 5: "process_date", + 6: "job_code", + 7: "item_code", + 8: "amount", + 9: "tax", + 10: "total_amount", + 11: "customer_group_id", + 12: "customer_id", + 13: "card_no", + 14: "card_id", + 15: "expire", + 16: "holder_name", + 17: "card_no_hash", + 18: "method", + 19: "pay_times", + 20: "forward", + 21: "issuer", + 22: "transaction_id", + 23: "approve", + 24: "auth_max_date", + 25: "client_field_1", + 26: "client_field_2", + 27: "client_field_3", + 28: "tds_type", + 29: "tds2_type", + 30: "tds2_ret_url", + 31: "tds2_status", + 32: "merchant_name", + 33: "send_url", + 34: "subscription_id", + 35: "brand", + 36: "error_code", + 37: "created", + 38: "updated", +} + +// Decode decodes PaymentsGetOKListItem from json. +func (s *PaymentsGetOKListItem) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode PaymentsGetOKListItem to nil") + } + + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + switch string(k) { + case "shop_id": + if err := func() error { + s.ShopID.Reset() + if err := s.ShopID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"shop_id\"") + } + case "id": + if err := func() error { + s.ID.Reset() + if err := s.ID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"id\"") + } + case "pay_type": + if err := func() error { + s.PayType.Reset() + if err := s.PayType.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"pay_type\"") + } + case "status": + if err := func() error { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"status\"") + } + case "access_id": + if err := func() error { + s.AccessID.Reset() + if err := s.AccessID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"access_id\"") + } + case "process_date": + if err := func() error { + s.ProcessDate.Reset() + if err := s.ProcessDate.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"process_date\"") + } + case "job_code": + if err := func() error { + s.JobCode.Reset() + if err := s.JobCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"job_code\"") + } + case "item_code": + if err := func() error { + s.ItemCode.Reset() + if err := s.ItemCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"item_code\"") + } + case "amount": + if err := func() error { + s.Amount.Reset() + if err := s.Amount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"amount\"") + } + case "tax": + if err := func() error { + s.Tax.Reset() + if err := s.Tax.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tax\"") + } + case "total_amount": + if err := func() error { + s.TotalAmount.Reset() + if err := s.TotalAmount.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"total_amount\"") + } + case "customer_group_id": + if err := func() error { + s.CustomerGroupID.Reset() + if err := s.CustomerGroupID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"customer_group_id\"") + } + case "customer_id": + if err := func() error { + s.CustomerID.Reset() + if err := s.CustomerID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"customer_id\"") + } + case "card_no": + if err := func() error { + s.CardNo.Reset() + if err := s.CardNo.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"card_no\"") + } + case "card_id": + if err := func() error { + s.CardID.Reset() + if err := s.CardID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"card_id\"") + } + case "expire": + if err := func() error { + s.Expire.Reset() + if err := s.Expire.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"expire\"") + } + case "holder_name": + if err := func() error { + s.HolderName.Reset() + if err := s.HolderName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"holder_name\"") + } + case "card_no_hash": + if err := func() error { + s.CardNoHash.Reset() + if err := s.CardNoHash.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"card_no_hash\"") + } + case "method": + if err := func() error { + s.Method.Reset() + if err := s.Method.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"method\"") + } + case "pay_times": + if err := func() error { + s.PayTimes.Reset() + if err := s.PayTimes.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"pay_times\"") + } + case "forward": + if err := func() error { + s.Forward.Reset() + if err := s.Forward.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"forward\"") + } + case "issuer": + if err := func() error { + s.Issuer.Reset() + if err := s.Issuer.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"issuer\"") + } + case "transaction_id": + if err := func() error { + s.TransactionID.Reset() + if err := s.TransactionID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"transaction_id\"") + } + case "approve": + if err := func() error { + s.Approve.Reset() + if err := s.Approve.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"approve\"") + } + case "auth_max_date": + if err := func() error { + s.AuthMaxDate.Reset() + if err := s.AuthMaxDate.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"auth_max_date\"") + } + case "client_field_1": + if err := func() error { + s.ClientField1.Reset() + if err := s.ClientField1.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"client_field_1\"") + } + case "client_field_2": + if err := func() error { + s.ClientField2.Reset() + if err := s.ClientField2.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"client_field_2\"") + } + case "client_field_3": + if err := func() error { + s.ClientField3.Reset() + if err := s.ClientField3.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"client_field_3\"") + } + case "tds_type": + if err := func() error { + s.TdsType.Reset() + if err := s.TdsType.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tds_type\"") + } + case "tds2_type": + if err := func() error { + s.Tds2Type.Reset() + if err := s.Tds2Type.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tds2_type\"") + } + case "tds2_ret_url": + if err := func() error { + s.Tds2RetURL.Reset() + if err := s.Tds2RetURL.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tds2_ret_url\"") + } + case "tds2_status": + if err := func() error { + s.Tds2Status.Reset() + if err := s.Tds2Status.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"tds2_status\"") + } + case "merchant_name": + if err := func() error { + s.MerchantName.Reset() + if err := s.MerchantName.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"merchant_name\"") + } + case "send_url": + if err := func() error { + s.SendURL.Reset() + if err := s.SendURL.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"send_url\"") + } + case "subscription_id": + if err := func() error { + s.SubscriptionID.Reset() + if err := s.SubscriptionID.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"subscription_id\"") + } + case "brand": + if err := func() error { + s.Brand.Reset() + if err := s.Brand.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"brand\"") + } + case "error_code": + if err := func() error { + s.ErrorCode.Reset() + if err := s.ErrorCode.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"error_code\"") + } + case "created": + if err := func() error { + s.Created.Reset() + if err := s.Created.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"created\"") + } + case "updated": + if err := func() error { + s.Updated.Reset() + if err := s.Updated.Decode(d); err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrap(err, "decode field \"updated\"") + } + default: + return d.Skip() + } + return nil + }); err != nil { + return errors.Wrap(err, "decode PaymentsGetOKListItem") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s *PaymentsGetOKListItem) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *PaymentsGetOKListItem) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes PaymentsIDPutOK as json. func (s PaymentsIDPutOK) Encode(e *jx.Encoder) { switch s.Type { diff --git a/api/oas_labeler_gen.go b/api/oas_labeler_gen.go new file mode 100644 index 0000000..7e519e8 --- /dev/null +++ b/api/oas_labeler_gen.go @@ -0,0 +1,42 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + + "go.opentelemetry.io/otel/attribute" +) + +// Labeler is used to allow adding custom attributes to the server request metrics. +type Labeler struct { + attrs []attribute.KeyValue +} + +// Add attributes to the Labeler. +func (l *Labeler) Add(attrs ...attribute.KeyValue) { + l.attrs = append(l.attrs, attrs...) +} + +// AttributeSet returns the attributes added to the Labeler as an attribute.Set. +func (l *Labeler) AttributeSet() attribute.Set { + return attribute.NewSet(l.attrs...) +} + +type labelerContextKey struct{} + +// LabelerFromContext retrieves the Labeler from the provided context, if present. +// +// If no Labeler was found in the provided context a new, empty Labeler is returned and the second +// return value is false. In this case it is safe to use the Labeler but any attributes added to +// it will not be used. +func LabelerFromContext(ctx context.Context) (*Labeler, bool) { + if l, ok := ctx.Value(labelerContextKey{}).(*Labeler); ok { + return l, true + } + return &Labeler{}, false +} + +func contextWithLabeler(ctx context.Context, l *Labeler) context.Context { + return context.WithValue(ctx, labelerContextKey{}, l) +} diff --git a/api/oas_parameters_gen.go b/api/oas_parameters_gen.go index 7c7669d..f5d973f 100644 --- a/api/oas_parameters_gen.go +++ b/api/oas_parameters_gen.go @@ -446,6 +446,969 @@ func decodeCustomersIDGetParams(args [1]string, argsEscaped bool, r *http.Reques return params, nil } +// PaymentsGetParams is parameters of GET /payments operation. +type PaymentsGetParams struct { + // 1回で取得するデータ件数. + Limit OptInt + // ページ数. + Page OptInt + // 総件数のみを取得するフラグ. + CountOnly OptBool + // ソート順の定義 + // ※ソート可能な項目 + // status - 決済ステータス + // process_date - 処理日時 + // total_amount - 利用金額と税送料の合計金額 + // auth_max_date - 仮売上有効期限 + // created - 作成日時 + // updated - 更新日時. + Sort OptNilString + // 決済種別 + // Card- クレジットカード決済 + // Applepay - Apple Pay + // Konbini- コンビニ決済 + // Paypay- PayPay. + PayType string + // 加盟店自由項目1-3に対する部分一致. + Keyword OptString + // 利用金額+税送料の合計(min). + TotalAmountMin OptInt + // 利用金額+税送料の合計(max). + TotalAmountMax OptString + // 顧客ID. + CustomerID OptString + // 作成日の範囲指定の始点。YYYY/MM/dd 形式. + ProcessDataFrom OptString + // 作成日の範囲指定の終点。YYYY/MM/dd 形式. + ProcessDataTo OptString + // 仮売上有効期限の始点。YYYY/MM/dd 形式. + AuthMaxDateFrom OptString + // 仮売上有効期限の終点。YYYY/MM/dd 形式. + AuthMaxDateTo OptString + // 更新日の範囲指定の始値。YYYY/MM/dd 形式. + UpdateDateFrom OptString + // 更新日の範囲指定の終点。YYYY/MM/dd 形式. + UpdateDateTo OptString + // 決済ステータス + // (カンマ区切りで複数指定可能) + // UNPROCESSED - 未決済 + // CHECKED - 有効性チェック + // AUTHORIZED - 仮売上 + // CAPTURED - 売上確定 + // CANCELED - キャンセル + // AUTHENTICATED - 未決済(3Dセキュア). + Status OptString + // 課金種別 + // (カンマ区切りで複数指定可能) + // onetime - サブスクリプション以外 + // subscription - サブスクリプション. + PayPattern OptString + // サブスクリプションID. + SubscriptionID OptString +} + +func unpackPaymentsGetParams(packed middleware.Parameters) (params PaymentsGetParams) { + { + key := middleware.ParameterKey{ + Name: "limit", + In: "query", + } + if v, ok := packed[key]; ok { + params.Limit = v.(OptInt) + } + } + { + key := middleware.ParameterKey{ + Name: "page", + In: "query", + } + if v, ok := packed[key]; ok { + params.Page = v.(OptInt) + } + } + { + key := middleware.ParameterKey{ + Name: "count_only", + In: "query", + } + if v, ok := packed[key]; ok { + params.CountOnly = v.(OptBool) + } + } + { + key := middleware.ParameterKey{ + Name: "sort", + In: "query", + } + if v, ok := packed[key]; ok { + params.Sort = v.(OptNilString) + } + } + { + key := middleware.ParameterKey{ + Name: "pay_type", + In: "query", + } + params.PayType = packed[key].(string) + } + { + key := middleware.ParameterKey{ + Name: "keyword", + In: "query", + } + if v, ok := packed[key]; ok { + params.Keyword = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "total_amount_min", + In: "query", + } + if v, ok := packed[key]; ok { + params.TotalAmountMin = v.(OptInt) + } + } + { + key := middleware.ParameterKey{ + Name: "total_amount_max", + In: "query", + } + if v, ok := packed[key]; ok { + params.TotalAmountMax = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "customer_id", + In: "query", + } + if v, ok := packed[key]; ok { + params.CustomerID = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "process_data_from", + In: "query", + } + if v, ok := packed[key]; ok { + params.ProcessDataFrom = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "process_data_to", + In: "query", + } + if v, ok := packed[key]; ok { + params.ProcessDataTo = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "auth_max_date_from", + In: "query", + } + if v, ok := packed[key]; ok { + params.AuthMaxDateFrom = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "auth_max_date_to", + In: "query", + } + if v, ok := packed[key]; ok { + params.AuthMaxDateTo = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "update_date_from", + In: "query", + } + if v, ok := packed[key]; ok { + params.UpdateDateFrom = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "update_date_to", + In: "query", + } + if v, ok := packed[key]; ok { + params.UpdateDateTo = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "status", + In: "query", + } + if v, ok := packed[key]; ok { + params.Status = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "pay_pattern", + In: "query", + } + if v, ok := packed[key]; ok { + params.PayPattern = v.(OptString) + } + } + { + key := middleware.ParameterKey{ + Name: "subscription_id", + In: "query", + } + if v, ok := packed[key]; ok { + params.SubscriptionID = v.(OptString) + } + } + return params +} + +func decodePaymentsGetParams(args [0]string, argsEscaped bool, r *http.Request) (params PaymentsGetParams, _ error) { + q := uri.NewQueryDecoder(r.URL.Query()) + // Decode query: limit. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "limit", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotLimitVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + paramsDotLimitVal = c + return nil + }(); err != nil { + return err + } + params.Limit.SetTo(paramsDotLimitVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "limit", + In: "query", + Err: err, + } + } + // Decode query: page. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "page", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotPageVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + paramsDotPageVal = c + return nil + }(); err != nil { + return err + } + params.Page.SetTo(paramsDotPageVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "page", + In: "query", + Err: err, + } + } + // Decode query: count_only. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "count_only", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotCountOnlyVal bool + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToBool(val) + if err != nil { + return err + } + + paramsDotCountOnlyVal = c + return nil + }(); err != nil { + return err + } + params.CountOnly.SetTo(paramsDotCountOnlyVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "count_only", + In: "query", + Err: err, + } + } + // Decode query: sort. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "sort", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotSortVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotSortVal = c + return nil + }(); err != nil { + return err + } + params.Sort.SetTo(paramsDotSortVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "sort", + In: "query", + Err: err, + } + } + // Decode query: pay_type. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "pay_type", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + params.PayType = c + return nil + }); err != nil { + return err + } + } else { + return validate.ErrFieldRequired + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "pay_type", + In: "query", + Err: err, + } + } + // Decode query: keyword. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "keyword", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotKeywordVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotKeywordVal = c + return nil + }(); err != nil { + return err + } + params.Keyword.SetTo(paramsDotKeywordVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "keyword", + In: "query", + Err: err, + } + } + // Decode query: total_amount_min. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "total_amount_min", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotTotalAmountMinVal int + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToInt(val) + if err != nil { + return err + } + + paramsDotTotalAmountMinVal = c + return nil + }(); err != nil { + return err + } + params.TotalAmountMin.SetTo(paramsDotTotalAmountMinVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "total_amount_min", + In: "query", + Err: err, + } + } + // Decode query: total_amount_max. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "total_amount_max", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotTotalAmountMaxVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotTotalAmountMaxVal = c + return nil + }(); err != nil { + return err + } + params.TotalAmountMax.SetTo(paramsDotTotalAmountMaxVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "total_amount_max", + In: "query", + Err: err, + } + } + // Decode query: customer_id. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "customer_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotCustomerIDVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotCustomerIDVal = c + return nil + }(); err != nil { + return err + } + params.CustomerID.SetTo(paramsDotCustomerIDVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "customer_id", + In: "query", + Err: err, + } + } + // Decode query: process_data_from. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "process_data_from", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotProcessDataFromVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotProcessDataFromVal = c + return nil + }(); err != nil { + return err + } + params.ProcessDataFrom.SetTo(paramsDotProcessDataFromVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "process_data_from", + In: "query", + Err: err, + } + } + // Decode query: process_data_to. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "process_data_to", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotProcessDataToVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotProcessDataToVal = c + return nil + }(); err != nil { + return err + } + params.ProcessDataTo.SetTo(paramsDotProcessDataToVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "process_data_to", + In: "query", + Err: err, + } + } + // Decode query: auth_max_date_from. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "auth_max_date_from", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotAuthMaxDateFromVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotAuthMaxDateFromVal = c + return nil + }(); err != nil { + return err + } + params.AuthMaxDateFrom.SetTo(paramsDotAuthMaxDateFromVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "auth_max_date_from", + In: "query", + Err: err, + } + } + // Decode query: auth_max_date_to. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "auth_max_date_to", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotAuthMaxDateToVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotAuthMaxDateToVal = c + return nil + }(); err != nil { + return err + } + params.AuthMaxDateTo.SetTo(paramsDotAuthMaxDateToVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "auth_max_date_to", + In: "query", + Err: err, + } + } + // Decode query: update_date_from. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "update_date_from", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotUpdateDateFromVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotUpdateDateFromVal = c + return nil + }(); err != nil { + return err + } + params.UpdateDateFrom.SetTo(paramsDotUpdateDateFromVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "update_date_from", + In: "query", + Err: err, + } + } + // Decode query: update_date_to. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "update_date_to", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotUpdateDateToVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotUpdateDateToVal = c + return nil + }(); err != nil { + return err + } + params.UpdateDateTo.SetTo(paramsDotUpdateDateToVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "update_date_to", + In: "query", + Err: err, + } + } + // Decode query: status. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "status", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotStatusVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotStatusVal = c + return nil + }(); err != nil { + return err + } + params.Status.SetTo(paramsDotStatusVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "status", + In: "query", + Err: err, + } + } + // Decode query: pay_pattern. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "pay_pattern", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotPayPatternVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotPayPatternVal = c + return nil + }(); err != nil { + return err + } + params.PayPattern.SetTo(paramsDotPayPatternVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "pay_pattern", + In: "query", + Err: err, + } + } + // Decode query: subscription_id. + if err := func() error { + cfg := uri.QueryParameterDecodingConfig{ + Name: "subscription_id", + Style: uri.QueryStyleForm, + Explode: true, + } + + if err := q.HasParam(cfg); err == nil { + if err := q.DecodeParam(cfg, func(d uri.Decoder) error { + var paramsDotSubscriptionIDVal string + if err := func() error { + val, err := d.DecodeValue() + if err != nil { + return err + } + + c, err := conv.ToString(val) + if err != nil { + return err + } + + paramsDotSubscriptionIDVal = c + return nil + }(); err != nil { + return err + } + params.SubscriptionID.SetTo(paramsDotSubscriptionIDVal) + return nil + }); err != nil { + return err + } + } + return nil + }(); err != nil { + return params, &ogenerrors.DecodeParamError{ + Name: "subscription_id", + In: "query", + Err: err, + } + } + return params, nil +} + // PaymentsIDPutParams is parameters of PUT /payments/{id} operation. type PaymentsIDPutParams struct { ID string diff --git a/api/oas_response_decoders_gen.go b/api/oas_response_decoders_gen.go index 7150721..67e19d0 100644 --- a/api/oas_response_decoders_gen.go +++ b/api/oas_response_decoders_gen.go @@ -560,6 +560,82 @@ func decodeCustomersPostResponse(resp *http.Response) (res CustomersPostRes, _ e return res, validate.UnexpectedStatusCode(resp.StatusCode) } +func decodePaymentsGetResponse(resp *http.Response) (res PaymentsGetRes, _ error) { + switch resp.StatusCode { + case 200: + // Code 200. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response PaymentsGetOK + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + case 400: + // Code 400. + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response PaymentsGetBadRequest + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &response, nil + default: + return res, validate.InvalidContentType(ct) + } + } + return res, validate.UnexpectedStatusCode(resp.StatusCode) +} + func decodePaymentsIDPutResponse(resp *http.Response) (res PaymentsIDPutRes, _ error) { switch resp.StatusCode { case 200: diff --git a/api/oas_response_encoders_gen.go b/api/oas_response_encoders_gen.go index 20c2489..7d48a8f 100644 --- a/api/oas_response_encoders_gen.go +++ b/api/oas_response_encoders_gen.go @@ -209,6 +209,39 @@ func encodeCustomersPostResponse(response CustomersPostRes, w http.ResponseWrite } } +func encodePaymentsGetResponse(response PaymentsGetRes, w http.ResponseWriter, span trace.Span) error { + switch response := response.(type) { + case *PaymentsGetOK: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + span.SetStatus(codes.Ok, http.StatusText(200)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + case *PaymentsGetBadRequest: + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(400) + span.SetStatus(codes.Error, http.StatusText(400)) + + e := new(jx.Encoder) + response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + return nil + + default: + return errors.Errorf("unexpected response type: %T", response) + } +} + func encodePaymentsIDPutResponse(response PaymentsIDPutRes, w http.ResponseWriter, span trace.Span) error { switch response := response.(type) { case *PaymentsIDPutOK: diff --git a/api/oas_router_gen.go b/api/oas_router_gen.go index 840d45a..f36885a 100644 --- a/api/oas_router_gen.go +++ b/api/oas_router_gen.go @@ -188,10 +188,12 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { if len(elem) == 0 { switch r.Method { + case "GET": + s.handlePaymentsGetRequest([0]string{}, elemIsEscaped, w, r) case "POST": s.handlePaymentsPostRequest([0]string{}, elemIsEscaped, w, r) default: - s.notAllowed(w, r, "POST") + s.notAllowed(w, r, "GET,POST") } return @@ -467,6 +469,14 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { if len(elem) == 0 { switch method { + case "GET": + r.name = "PaymentsGet" + r.summary = "" + r.operationID = "" + r.pathPattern = "/payments" + r.args = args + r.count = 0 + return r, true case "POST": r.name = "PaymentsPost" r.summary = "" diff --git a/api/oas_schemas_gen.go b/api/oas_schemas_gen.go index e9d5c85..bffe48b 100644 --- a/api/oas_schemas_gen.go +++ b/api/oas_schemas_gen.go @@ -969,6 +969,52 @@ func (s *ErrorResponseErrorsItem) SetErrorMessage(val string) { s.ErrorMessage = val } +// NewOptBool returns new OptBool with value set to v. +func NewOptBool(v bool) OptBool { + return OptBool{ + Value: v, + Set: true, + } +} + +// OptBool is optional bool. +type OptBool struct { + Value bool + Set bool +} + +// IsSet returns true if OptBool was set. +func (o OptBool) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptBool) Reset() { + var v bool + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptBool) SetTo(v bool) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptBool) Get() (v bool, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptBool) Or(d bool) bool { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptInt returns new OptInt with value set to v. func NewOptInt(v int) OptInt { return OptInt{ @@ -11151,6 +11197,561 @@ func (s *PaymentMethodDirectDebitResponseStatus) UnmarshalText(data []byte) erro } } +type PaymentsGetBadRequest struct { + Errors []PaymentsGetBadRequestErrorsItem `json:"errors"` +} + +// GetErrors returns the value of Errors. +func (s *PaymentsGetBadRequest) GetErrors() []PaymentsGetBadRequestErrorsItem { + return s.Errors +} + +// SetErrors sets the value of Errors. +func (s *PaymentsGetBadRequest) SetErrors(val []PaymentsGetBadRequestErrorsItem) { + s.Errors = val +} + +func (*PaymentsGetBadRequest) paymentsGetRes() {} + +type PaymentsGetBadRequestErrorsItem struct { + ErrorCode OptString `json:"error_code"` + ErrorMessage OptString `json:"error_message"` +} + +// GetErrorCode returns the value of ErrorCode. +func (s *PaymentsGetBadRequestErrorsItem) GetErrorCode() OptString { + return s.ErrorCode +} + +// GetErrorMessage returns the value of ErrorMessage. +func (s *PaymentsGetBadRequestErrorsItem) GetErrorMessage() OptString { + return s.ErrorMessage +} + +// SetErrorCode sets the value of ErrorCode. +func (s *PaymentsGetBadRequestErrorsItem) SetErrorCode(val OptString) { + s.ErrorCode = val +} + +// SetErrorMessage sets the value of ErrorMessage. +func (s *PaymentsGetBadRequestErrorsItem) SetErrorMessage(val OptString) { + s.ErrorMessage = val +} + +type PaymentsGetOK struct { + TotalCount OptInt `json:"total_count"` + LastPage OptInt `json:"last_page"` + CurrentPage OptInt `json:"current_page"` + Limit OptInt `json:"limit"` + LinkNext OptNilString `json:"link_next"` + LinkPrevious OptNilString `json:"link_previous"` + List []PaymentsGetOKListItem `json:"list"` +} + +// GetTotalCount returns the value of TotalCount. +func (s *PaymentsGetOK) GetTotalCount() OptInt { + return s.TotalCount +} + +// GetLastPage returns the value of LastPage. +func (s *PaymentsGetOK) GetLastPage() OptInt { + return s.LastPage +} + +// GetCurrentPage returns the value of CurrentPage. +func (s *PaymentsGetOK) GetCurrentPage() OptInt { + return s.CurrentPage +} + +// GetLimit returns the value of Limit. +func (s *PaymentsGetOK) GetLimit() OptInt { + return s.Limit +} + +// GetLinkNext returns the value of LinkNext. +func (s *PaymentsGetOK) GetLinkNext() OptNilString { + return s.LinkNext +} + +// GetLinkPrevious returns the value of LinkPrevious. +func (s *PaymentsGetOK) GetLinkPrevious() OptNilString { + return s.LinkPrevious +} + +// GetList returns the value of List. +func (s *PaymentsGetOK) GetList() []PaymentsGetOKListItem { + return s.List +} + +// SetTotalCount sets the value of TotalCount. +func (s *PaymentsGetOK) SetTotalCount(val OptInt) { + s.TotalCount = val +} + +// SetLastPage sets the value of LastPage. +func (s *PaymentsGetOK) SetLastPage(val OptInt) { + s.LastPage = val +} + +// SetCurrentPage sets the value of CurrentPage. +func (s *PaymentsGetOK) SetCurrentPage(val OptInt) { + s.CurrentPage = val +} + +// SetLimit sets the value of Limit. +func (s *PaymentsGetOK) SetLimit(val OptInt) { + s.Limit = val +} + +// SetLinkNext sets the value of LinkNext. +func (s *PaymentsGetOK) SetLinkNext(val OptNilString) { + s.LinkNext = val +} + +// SetLinkPrevious sets the value of LinkPrevious. +func (s *PaymentsGetOK) SetLinkPrevious(val OptNilString) { + s.LinkPrevious = val +} + +// SetList sets the value of List. +func (s *PaymentsGetOK) SetList(val []PaymentsGetOKListItem) { + s.List = val +} + +func (*PaymentsGetOK) paymentsGetRes() {} + +type PaymentsGetOKListItem struct { + ShopID OptString `json:"shop_id"` + ID OptString `json:"id"` + PayType OptString `json:"pay_type"` + Status OptString `json:"status"` + AccessID OptString `json:"access_id"` + ProcessDate OptString `json:"process_date"` + JobCode OptString `json:"job_code"` + ItemCode OptString `json:"item_code"` + Amount OptInt `json:"amount"` + Tax OptInt `json:"tax"` + TotalAmount OptInt `json:"total_amount"` + CustomerGroupID OptNilString `json:"customer_group_id"` + CustomerID OptNilString `json:"customer_id"` + CardNo OptNilString `json:"card_no"` + CardID OptNilString `json:"card_id"` + Expire OptNilString `json:"expire"` + HolderName OptNilString `json:"holder_name"` + CardNoHash OptNilString `json:"card_no_hash"` + Method OptNilString `json:"method"` + PayTimes OptNilString `json:"pay_times"` + Forward OptNilString `json:"forward"` + Issuer OptNilString `json:"issuer"` + TransactionID OptNilString `json:"transaction_id"` + Approve OptNilString `json:"approve"` + AuthMaxDate OptNilString `json:"auth_max_date"` + ClientField1 OptNilString `json:"client_field_1"` + ClientField2 OptNilString `json:"client_field_2"` + ClientField3 OptNilString `json:"client_field_3"` + TdsType OptString `json:"tds_type"` + Tds2Type OptNilString `json:"tds2_type"` + Tds2RetURL OptNilString `json:"tds2_ret_url"` + Tds2Status OptNilString `json:"tds2_status"` + MerchantName OptNilString `json:"merchant_name"` + SendURL OptNilString `json:"send_url"` + SubscriptionID OptNilString `json:"subscription_id"` + Brand OptString `json:"brand"` + ErrorCode OptNilString `json:"error_code"` + Created OptString `json:"created"` + Updated OptString `json:"updated"` +} + +// GetShopID returns the value of ShopID. +func (s *PaymentsGetOKListItem) GetShopID() OptString { + return s.ShopID +} + +// GetID returns the value of ID. +func (s *PaymentsGetOKListItem) GetID() OptString { + return s.ID +} + +// GetPayType returns the value of PayType. +func (s *PaymentsGetOKListItem) GetPayType() OptString { + return s.PayType +} + +// GetStatus returns the value of Status. +func (s *PaymentsGetOKListItem) GetStatus() OptString { + return s.Status +} + +// GetAccessID returns the value of AccessID. +func (s *PaymentsGetOKListItem) GetAccessID() OptString { + return s.AccessID +} + +// GetProcessDate returns the value of ProcessDate. +func (s *PaymentsGetOKListItem) GetProcessDate() OptString { + return s.ProcessDate +} + +// GetJobCode returns the value of JobCode. +func (s *PaymentsGetOKListItem) GetJobCode() OptString { + return s.JobCode +} + +// GetItemCode returns the value of ItemCode. +func (s *PaymentsGetOKListItem) GetItemCode() OptString { + return s.ItemCode +} + +// GetAmount returns the value of Amount. +func (s *PaymentsGetOKListItem) GetAmount() OptInt { + return s.Amount +} + +// GetTax returns the value of Tax. +func (s *PaymentsGetOKListItem) GetTax() OptInt { + return s.Tax +} + +// GetTotalAmount returns the value of TotalAmount. +func (s *PaymentsGetOKListItem) GetTotalAmount() OptInt { + return s.TotalAmount +} + +// GetCustomerGroupID returns the value of CustomerGroupID. +func (s *PaymentsGetOKListItem) GetCustomerGroupID() OptNilString { + return s.CustomerGroupID +} + +// GetCustomerID returns the value of CustomerID. +func (s *PaymentsGetOKListItem) GetCustomerID() OptNilString { + return s.CustomerID +} + +// GetCardNo returns the value of CardNo. +func (s *PaymentsGetOKListItem) GetCardNo() OptNilString { + return s.CardNo +} + +// GetCardID returns the value of CardID. +func (s *PaymentsGetOKListItem) GetCardID() OptNilString { + return s.CardID +} + +// GetExpire returns the value of Expire. +func (s *PaymentsGetOKListItem) GetExpire() OptNilString { + return s.Expire +} + +// GetHolderName returns the value of HolderName. +func (s *PaymentsGetOKListItem) GetHolderName() OptNilString { + return s.HolderName +} + +// GetCardNoHash returns the value of CardNoHash. +func (s *PaymentsGetOKListItem) GetCardNoHash() OptNilString { + return s.CardNoHash +} + +// GetMethod returns the value of Method. +func (s *PaymentsGetOKListItem) GetMethod() OptNilString { + return s.Method +} + +// GetPayTimes returns the value of PayTimes. +func (s *PaymentsGetOKListItem) GetPayTimes() OptNilString { + return s.PayTimes +} + +// GetForward returns the value of Forward. +func (s *PaymentsGetOKListItem) GetForward() OptNilString { + return s.Forward +} + +// GetIssuer returns the value of Issuer. +func (s *PaymentsGetOKListItem) GetIssuer() OptNilString { + return s.Issuer +} + +// GetTransactionID returns the value of TransactionID. +func (s *PaymentsGetOKListItem) GetTransactionID() OptNilString { + return s.TransactionID +} + +// GetApprove returns the value of Approve. +func (s *PaymentsGetOKListItem) GetApprove() OptNilString { + return s.Approve +} + +// GetAuthMaxDate returns the value of AuthMaxDate. +func (s *PaymentsGetOKListItem) GetAuthMaxDate() OptNilString { + return s.AuthMaxDate +} + +// GetClientField1 returns the value of ClientField1. +func (s *PaymentsGetOKListItem) GetClientField1() OptNilString { + return s.ClientField1 +} + +// GetClientField2 returns the value of ClientField2. +func (s *PaymentsGetOKListItem) GetClientField2() OptNilString { + return s.ClientField2 +} + +// GetClientField3 returns the value of ClientField3. +func (s *PaymentsGetOKListItem) GetClientField3() OptNilString { + return s.ClientField3 +} + +// GetTdsType returns the value of TdsType. +func (s *PaymentsGetOKListItem) GetTdsType() OptString { + return s.TdsType +} + +// GetTds2Type returns the value of Tds2Type. +func (s *PaymentsGetOKListItem) GetTds2Type() OptNilString { + return s.Tds2Type +} + +// GetTds2RetURL returns the value of Tds2RetURL. +func (s *PaymentsGetOKListItem) GetTds2RetURL() OptNilString { + return s.Tds2RetURL +} + +// GetTds2Status returns the value of Tds2Status. +func (s *PaymentsGetOKListItem) GetTds2Status() OptNilString { + return s.Tds2Status +} + +// GetMerchantName returns the value of MerchantName. +func (s *PaymentsGetOKListItem) GetMerchantName() OptNilString { + return s.MerchantName +} + +// GetSendURL returns the value of SendURL. +func (s *PaymentsGetOKListItem) GetSendURL() OptNilString { + return s.SendURL +} + +// GetSubscriptionID returns the value of SubscriptionID. +func (s *PaymentsGetOKListItem) GetSubscriptionID() OptNilString { + return s.SubscriptionID +} + +// GetBrand returns the value of Brand. +func (s *PaymentsGetOKListItem) GetBrand() OptString { + return s.Brand +} + +// GetErrorCode returns the value of ErrorCode. +func (s *PaymentsGetOKListItem) GetErrorCode() OptNilString { + return s.ErrorCode +} + +// GetCreated returns the value of Created. +func (s *PaymentsGetOKListItem) GetCreated() OptString { + return s.Created +} + +// GetUpdated returns the value of Updated. +func (s *PaymentsGetOKListItem) GetUpdated() OptString { + return s.Updated +} + +// SetShopID sets the value of ShopID. +func (s *PaymentsGetOKListItem) SetShopID(val OptString) { + s.ShopID = val +} + +// SetID sets the value of ID. +func (s *PaymentsGetOKListItem) SetID(val OptString) { + s.ID = val +} + +// SetPayType sets the value of PayType. +func (s *PaymentsGetOKListItem) SetPayType(val OptString) { + s.PayType = val +} + +// SetStatus sets the value of Status. +func (s *PaymentsGetOKListItem) SetStatus(val OptString) { + s.Status = val +} + +// SetAccessID sets the value of AccessID. +func (s *PaymentsGetOKListItem) SetAccessID(val OptString) { + s.AccessID = val +} + +// SetProcessDate sets the value of ProcessDate. +func (s *PaymentsGetOKListItem) SetProcessDate(val OptString) { + s.ProcessDate = val +} + +// SetJobCode sets the value of JobCode. +func (s *PaymentsGetOKListItem) SetJobCode(val OptString) { + s.JobCode = val +} + +// SetItemCode sets the value of ItemCode. +func (s *PaymentsGetOKListItem) SetItemCode(val OptString) { + s.ItemCode = val +} + +// SetAmount sets the value of Amount. +func (s *PaymentsGetOKListItem) SetAmount(val OptInt) { + s.Amount = val +} + +// SetTax sets the value of Tax. +func (s *PaymentsGetOKListItem) SetTax(val OptInt) { + s.Tax = val +} + +// SetTotalAmount sets the value of TotalAmount. +func (s *PaymentsGetOKListItem) SetTotalAmount(val OptInt) { + s.TotalAmount = val +} + +// SetCustomerGroupID sets the value of CustomerGroupID. +func (s *PaymentsGetOKListItem) SetCustomerGroupID(val OptNilString) { + s.CustomerGroupID = val +} + +// SetCustomerID sets the value of CustomerID. +func (s *PaymentsGetOKListItem) SetCustomerID(val OptNilString) { + s.CustomerID = val +} + +// SetCardNo sets the value of CardNo. +func (s *PaymentsGetOKListItem) SetCardNo(val OptNilString) { + s.CardNo = val +} + +// SetCardID sets the value of CardID. +func (s *PaymentsGetOKListItem) SetCardID(val OptNilString) { + s.CardID = val +} + +// SetExpire sets the value of Expire. +func (s *PaymentsGetOKListItem) SetExpire(val OptNilString) { + s.Expire = val +} + +// SetHolderName sets the value of HolderName. +func (s *PaymentsGetOKListItem) SetHolderName(val OptNilString) { + s.HolderName = val +} + +// SetCardNoHash sets the value of CardNoHash. +func (s *PaymentsGetOKListItem) SetCardNoHash(val OptNilString) { + s.CardNoHash = val +} + +// SetMethod sets the value of Method. +func (s *PaymentsGetOKListItem) SetMethod(val OptNilString) { + s.Method = val +} + +// SetPayTimes sets the value of PayTimes. +func (s *PaymentsGetOKListItem) SetPayTimes(val OptNilString) { + s.PayTimes = val +} + +// SetForward sets the value of Forward. +func (s *PaymentsGetOKListItem) SetForward(val OptNilString) { + s.Forward = val +} + +// SetIssuer sets the value of Issuer. +func (s *PaymentsGetOKListItem) SetIssuer(val OptNilString) { + s.Issuer = val +} + +// SetTransactionID sets the value of TransactionID. +func (s *PaymentsGetOKListItem) SetTransactionID(val OptNilString) { + s.TransactionID = val +} + +// SetApprove sets the value of Approve. +func (s *PaymentsGetOKListItem) SetApprove(val OptNilString) { + s.Approve = val +} + +// SetAuthMaxDate sets the value of AuthMaxDate. +func (s *PaymentsGetOKListItem) SetAuthMaxDate(val OptNilString) { + s.AuthMaxDate = val +} + +// SetClientField1 sets the value of ClientField1. +func (s *PaymentsGetOKListItem) SetClientField1(val OptNilString) { + s.ClientField1 = val +} + +// SetClientField2 sets the value of ClientField2. +func (s *PaymentsGetOKListItem) SetClientField2(val OptNilString) { + s.ClientField2 = val +} + +// SetClientField3 sets the value of ClientField3. +func (s *PaymentsGetOKListItem) SetClientField3(val OptNilString) { + s.ClientField3 = val +} + +// SetTdsType sets the value of TdsType. +func (s *PaymentsGetOKListItem) SetTdsType(val OptString) { + s.TdsType = val +} + +// SetTds2Type sets the value of Tds2Type. +func (s *PaymentsGetOKListItem) SetTds2Type(val OptNilString) { + s.Tds2Type = val +} + +// SetTds2RetURL sets the value of Tds2RetURL. +func (s *PaymentsGetOKListItem) SetTds2RetURL(val OptNilString) { + s.Tds2RetURL = val +} + +// SetTds2Status sets the value of Tds2Status. +func (s *PaymentsGetOKListItem) SetTds2Status(val OptNilString) { + s.Tds2Status = val +} + +// SetMerchantName sets the value of MerchantName. +func (s *PaymentsGetOKListItem) SetMerchantName(val OptNilString) { + s.MerchantName = val +} + +// SetSendURL sets the value of SendURL. +func (s *PaymentsGetOKListItem) SetSendURL(val OptNilString) { + s.SendURL = val +} + +// SetSubscriptionID sets the value of SubscriptionID. +func (s *PaymentsGetOKListItem) SetSubscriptionID(val OptNilString) { + s.SubscriptionID = val +} + +// SetBrand sets the value of Brand. +func (s *PaymentsGetOKListItem) SetBrand(val OptString) { + s.Brand = val +} + +// SetErrorCode sets the value of ErrorCode. +func (s *PaymentsGetOKListItem) SetErrorCode(val OptNilString) { + s.ErrorCode = val +} + +// SetCreated sets the value of Created. +func (s *PaymentsGetOKListItem) SetCreated(val OptString) { + s.Created = val +} + +// SetUpdated sets the value of Updated. +func (s *PaymentsGetOKListItem) SetUpdated(val OptString) { + s.Updated = val +} + // PaymentsIDPutOK represents sum type. type PaymentsIDPutOK struct { Type PaymentsIDPutOKType // switch on this field diff --git a/api/oas_server_gen.go b/api/oas_server_gen.go index 595e470..8385ce5 100644 --- a/api/oas_server_gen.go +++ b/api/oas_server_gen.go @@ -32,6 +32,10 @@ type Handler interface { // // POST /customers CustomersPost(ctx context.Context, req *CustomersPostReq) (CustomersPostRes, error) + // PaymentsGet implements GET /payments operation. + // + // GET /payments + PaymentsGet(ctx context.Context, params PaymentsGetParams) (PaymentsGetRes, error) // PaymentsIDPut implements PUT /payments/{id} operation. // // PUT /payments/{id} diff --git a/api/oas_unimplemented_gen.go b/api/oas_unimplemented_gen.go index 694668f..14fccc7 100644 --- a/api/oas_unimplemented_gen.go +++ b/api/oas_unimplemented_gen.go @@ -55,6 +55,13 @@ func (UnimplementedHandler) CustomersPost(ctx context.Context, req *CustomersPos return r, ht.ErrNotImplemented } +// PaymentsGet implements GET /payments operation. +// +// GET /payments +func (UnimplementedHandler) PaymentsGet(ctx context.Context, params PaymentsGetParams) (r PaymentsGetRes, _ error) { + return r, ht.ErrNotImplemented +} + // PaymentsIDPut implements PUT /payments/{id} operation. // // PUT /payments/{id} diff --git a/go.mod b/go.mod index c469f28..875aa4e 100644 --- a/go.mod +++ b/go.mod @@ -8,10 +8,10 @@ require ( github.com/go-faster/jx v1.1.0 github.com/k1LoW/httpstub v0.15.1 github.com/k1LoW/runn v0.103.0 - github.com/ogen-go/ogen v1.0.0 - go.opentelemetry.io/otel v1.24.0 - go.opentelemetry.io/otel/metric v1.24.0 - go.opentelemetry.io/otel/trace v1.24.0 + github.com/ogen-go/ogen v1.1.0 + go.opentelemetry.io/otel v1.25.0 + go.opentelemetry.io/otel/metric v1.25.0 + go.opentelemetry.io/otel/trace v1.25.0 go.uber.org/multierr v1.11.0 ) @@ -138,7 +138,7 @@ require ( go.uber.org/zap v1.27.0 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect - golang.org/x/net v0.23.0 // indirect + golang.org/x/net v0.24.0 // indirect golang.org/x/oauth2 v0.18.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.19.0 // indirect diff --git a/go.sum b/go.sum index 6de38e6..8184364 100644 --- a/go.sum +++ b/go.sum @@ -339,8 +339,8 @@ github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJm github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/ogen-go/ogen v1.0.0 h1:n1hkgOnLtA1Xn369KAzJhqzphQzNo/wAI82NIaFQNXA= -github.com/ogen-go/ogen v1.0.0/go.mod h1:NFn616zR+/DPsq8rPoezaHlhKcNQzlYfo5gUieW8utI= +github.com/ogen-go/ogen v1.1.0 h1:hM4osoOPGWvx8pcdqE8jb5VvzHA+wi3u+DwCvZoW4dg= +github.com/ogen-go/ogen v1.1.0/go.mod h1:d5Ph7PWpJz453ZdGbVe+DBVPS150idePr5dZ+S0JG00= github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU= github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= @@ -444,14 +444,14 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.4 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= -go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/otel v1.25.0 h1:gldB5FfhRl7OJQbUHt/8s0a7cE8fbsPAtdpRaApKy4k= +go.opentelemetry.io/otel v1.25.0/go.mod h1:Wa2ds5NOXEMkCmUou1WA7ZBfLTHWIsp034OVD7AO+Vg= +go.opentelemetry.io/otel/metric v1.25.0 h1:LUKbS7ArpFL/I2jJHdJcqMGxkRdxpPHE0VU/D4NuEwA= +go.opentelemetry.io/otel/metric v1.25.0/go.mod h1:rkDLUSd2lC5lq2dFNrX9LGAbINP5B7WBkC78RXCpH5s= +go.opentelemetry.io/otel/sdk v1.25.0 h1:PDryEJPC8YJZQSyLY5eqLeafHtG+X7FWnf3aXMtxbqo= +go.opentelemetry.io/otel/sdk v1.25.0/go.mod h1:oFgzCM2zdsxKzz6zwpTZYLLQsFwc+K0daArPdIhuxkw= +go.opentelemetry.io/otel/trace v1.25.0 h1:tqukZGLwQYRIFtSQM2u2+yfMVTgGVeqRLPUYx1Dq6RM= +go.opentelemetry.io/otel/trace v1.25.0/go.mod h1:hCCs70XM/ljO+BeQkyFnbK28SBIJ/Emuha+ccrCRT7I= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -477,8 +477,8 @@ golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvx golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= -golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -493,8 +493,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= @@ -552,8 +552,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= -golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= +golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/payments_test.go b/payments_test.go index a2d9dec..951ebc4 100644 --- a/payments_test.go +++ b/payments_test.go @@ -3,6 +3,7 @@ package fincode import ( "context" "testing" + "time" "github.com/k1LoW/runn" "github.com/pepabo/fincode-go/api" @@ -98,6 +99,28 @@ func TestPayments(t *testing.T) { } }) + t.Run("List Payments", func(t *testing.T) { + today := time.Now().Format("2006/01/02") + res, err := c.PaymentsGet(ctx, api.PaymentsGetParams{ + PayType: "Card", + ProcessDataFrom: api.NewOptString(today), + Limit: api.NewOptInt(100), + }) + if err != nil { + t.Fatal(err) + } + v, ok := res.(*api.PaymentsGetOK) + if !ok { + t.Fatalf("unexpected response: %T, %#v", res, res) + } + for _, p := range v.List { + if p.AccessID.Value == accessID { + return + } + } + t.Errorf("payment not found: %s", accessID) + }) + t.Cleanup(func() { o.Close(false) }) diff --git a/spec/openapi3.yml b/spec/openapi3.yml index e18de6e..e43ce88 100644 --- a/spec/openapi3.yml +++ b/spec/openapi3.yml @@ -8,6 +8,274 @@ security: - BearerAuth: [] paths: /payments: + get: + parameters: + - in: query + name: limit + schema: + type: integer + description: 1回で取得するデータ件数 + - in: query + name: page + schema: + type: integer + description: ページ数 + - in: query + name: count_only + schema: + type: boolean + description: 総件数のみを取得するフラグ + - in: query + name: sort + schema: + # FIXME: fincodeのドキュメントにはanyと記述してある + type: string + nullable: true + description: | + ソート順の定義 + ※ソート可能な項目 + + status - 決済ステータス + process_date - 処理日時 + total_amount - 利用金額と税送料の合計金額 + auth_max_date - 仮売上有効期限 + created - 作成日時 + updated - 更新日時 + - in: query + name: pay_type + required: true + schema: + type: string + description: | + 決済種別 + Card- クレジットカード決済 + Applepay - Apple Pay + Konbini- コンビニ決済 + Paypay- PayPay + - in: query + name: keyword + schema: + type: string + description: 加盟店自由項目1-3に対する部分一致 + - in: query + name: total_amount_min + schema: + type: integer + description: 利用金額+税送料の合計(min) + - in: query + name: total_amount_max + schema: + type: string + description: 利用金額+税送料の合計(max) + - in: query + name: customer_id + schema: + type: string + description: 顧客ID + - in: query + name: process_data_from + schema: + type: string + description: 作成日の範囲指定の始点。YYYY/MM/dd 形式 + - in: query + name: process_data_to + schema: + type: string + description: 作成日の範囲指定の終点。YYYY/MM/dd 形式 + - in: query + name: auth_max_date_from + schema: + type: string + description: 仮売上有効期限の始点。YYYY/MM/dd 形式 + - in: query + name: auth_max_date_to + schema: + type: string + description: 仮売上有効期限の終点。YYYY/MM/dd 形式 + - in: query + name: update_date_from + schema: + type: string + description: 更新日の範囲指定の始値。YYYY/MM/dd 形式 + - in: query + name: update_date_to + schema: + type: string + description: 更新日の範囲指定の終点。YYYY/MM/dd 形式 + - in: query + name: status + schema: + type: string + description: | + 決済ステータス + (カンマ区切りで複数指定可能) + + UNPROCESSED - 未決済 + CHECKED - 有効性チェック + AUTHORIZED - 仮売上 + CAPTURED - 売上確定 + CANCELED - キャンセル + AUTHENTICATED - 未決済(3Dセキュア) + - in: query + name: pay_pattern + schema: + type: string + description: | + 課金種別 + (カンマ区切りで複数指定可能) + + onetime - サブスクリプション以外 + subscription - サブスクリプション + - in: query + name: subscription_id + schema: + type: string + description: サブスクリプションID + responses: + "200": + description: "OK" + content: + application/json: + schema: + type: object + properties: + total_count: + type: integer + last_page: + type: integer + current_page: + type: integer + limit: + type: integer + link_next: + type: string + nullable: true + link_previous: + type: string + nullable: true + list: + type: array + items: + type: object + properties: + shop_id: + type: string + id: + type: string + pay_type: + type: string + status: + type: string + access_id: + type: string + process_date: + type: string + job_code: + type: string + item_code: + type: string + amount: + type: integer + tax: + type: integer + total_amount: + type: integer + customer_group_id: + type: string + nullable: true + customer_id: + type: string + nullable: true + card_no: + type: string + nullable: true + card_id: + type: string + nullable: true + expire: + type: string + nullable: true + holder_name: + type: string + nullable: true + card_no_hash: + type: string + nullable: true + method: + type: string + nullable: true + pay_times: + type: string + nullable: true + forward: + type: string + nullable: true + issuer: + type: string + nullable: true + transaction_id: + type: string + nullable: true + approve: + type: string + nullable: true + auth_max_date: + type: string + nullable: true + client_field_1: + type: string + nullable: true + client_field_2: + type: string + nullable: true + client_field_3: + type: string + nullable: true + tds_type: + type: string + tds2_type: + type: string + nullable: true + tds2_ret_url: + type: string + nullable: true + tds2_status: + type: string + nullable: true + merchant_name: + type: string + nullable: true + send_url: + type: string + nullable: true + subscription_id: + type: string + nullable: true + brand: + type: string + error_code: + type: string + nullable: true + created: + type: string + updated: + type: string + "400": + description: "Bad Request. リクエストが不正です" + content: + application/json: + schema: + type: object + properties: + errors: + type: array + items: + type: object + properties: + error_code: + type: string + error_message: + type: string post: requestBody: required: true @@ -1177,7 +1445,7 @@ components: type: string nullable: true brand: - type: string + type: string error_code: type: string nullable: true