diff --git a/api/api.yml b/api/api.yml index 22688437..29c81a8f 100644 --- a/api/api.yml +++ b/api/api.yml @@ -48,53 +48,6 @@ paths: schema: $ref: "#/components/schemas/Version" - /keys: - get: - summary: List all NKeys - operationId: listKeys - tags: - - NKey - produces: - - "application/json" - parameters: - - $ref: "#/components/parameters/offsetParam" - - $ref: "#/components/parameters/limitParam" - security: - - bearerAuth: ["read:keys"] - responses: - "200": - description: Successfull response - content: - application/json: - schema: - allOf: - - $ref: "#/components/schemas/PaginatedResult" - - type: object - properties: - results: - type: array - items: - $ref: "#/components/schemas/KeyPair" - post: - summary: Creates a new NKey - operationId: createKey - tags: - - NKey - produces: - - "application/json" - responses: - "201": - description: Created - content: - application/json: - schema: - $ref: "#/components/schemas/KeyPair" - links: - GetKeyById: - operationId: getKey - parameters: - keyId: "$response.body#/id" - /operators: get: summary: List all operators @@ -130,10 +83,7 @@ paths: produces: - "application/json" requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Operator" + $ref: "#/components/requestBodies/CreateOperator" responses: "201": description: Created @@ -652,6 +602,20 @@ components: application/json: schema: $ref: "#/components/schemas/Team" + CreateOperator: + content: + application/json: + schema: + type: object + required: + - name + properties: + name: + type: string + description: + type: string + contactEmail: + type: string securitySchemes: cookieAuth: @@ -745,10 +709,16 @@ components: properties: id: type: string - format: uuid + format: base32 readOnly: true name: type: string + key: + $ref: "#/components/schemas/KeyPair" + signingKeys: + type: array + items: + $ref: "#/components/schemas/KeyPair" description: type: string contactEmail: diff --git a/cmd/api/cmd/root.go b/cmd/api/cmd/root.go index 000016d5..aa02788c 100644 --- a/cmd/api/cmd/root.go +++ b/cmd/api/cmd/root.go @@ -89,8 +89,9 @@ func (s *WebSrv) Start(ctx context.Context, ready server.ReadyFunc, run server.R tc := controllers.NewTeamsController(db) sc := controllers.NewSystemsController(db) vc := controllers.NewVersionController(build) + oc := controllers.NewOperatorsController(db) - handlers := services.NewApiHandlers(sc, tc, vc) + handlers := services.NewApiHandlers(sc, tc, vc, oc) handler := openapi.NewStrictHandler(handlers, nil) openapi.RegisterHandlers(app, handler) diff --git a/internal/api/adapters/db.go b/internal/api/adapters/db.go index ec68b696..4a20f3ad 100644 --- a/internal/api/adapters/db.go +++ b/internal/api/adapters/db.go @@ -8,8 +8,9 @@ import ( ) var ( - _ ports.Teams = (*DB)(nil) - _ ports.Systems = (*DB)(nil) + _ ports.Teams = (*DB)(nil) + _ ports.Systems = (*DB)(nil) + _ ports.Operators = (*DB)(nil) ) // DB ... @@ -30,3 +31,18 @@ func (db *DB) RunMigrations() error { &models.System{}, ) } + +// GetOperator ... +func (db *DB) GetOperator(id string) (*models.Operator, error) { + operator := &models.Operator{} + if err := db.conn.Where("id = ?", id).First(operator).Error; err != nil { + return nil, err + } + + return operator, nil +} + +// CreateOperator ... +func (db *DB) CreateOperator(operator *models.Operator) error { + return db.conn.Create(operator).Error +} diff --git a/internal/api/controllers/operators.go b/internal/api/controllers/operators.go new file mode 100644 index 00000000..6c6827b0 --- /dev/null +++ b/internal/api/controllers/operators.go @@ -0,0 +1,50 @@ +package controllers + +import ( + "github.com/nats-io/nkeys" + "github.com/zeiss/typhoon/internal/api/models" + "github.com/zeiss/typhoon/internal/api/ports" +) + +// OperatorsController ... +type OperatorsController struct { + db ports.Operators +} + +// NewOperatorsController ... +func NewOperatorsController(db ports.Operators) *OperatorsController { + return &OperatorsController{db} +} + +// CreateOperator ... +func (c *OperatorsController) CreateOperator(name string) (*models.Operator, error) { + key, err := nkeys.CreateOperator() + if err != nil { + return nil, err + } + + id, err := key.PublicKey() + if err != nil { + return nil, err + } + + seed, err := key.Seed() + if err != nil { + return nil, err + } + + op := &models.Operator{ + ID: id, + Key: models.NKey{ + ID: id, + Seed: seed, + }, + } + + err = c.db.CreateOperator(op) + if err != nil { + return nil, err + } + + return op, nil +} diff --git a/internal/api/models/operator.go b/internal/api/models/operator.go index 42ed74eb..2b64dafc 100644 --- a/internal/api/models/operator.go +++ b/internal/api/models/operator.go @@ -3,14 +3,13 @@ package models import ( "time" - "github.com/google/uuid" "gorm.io/gorm" ) // Operator ... type Operator struct { - ID uuid.UUID `json:"id" gorm:"type:uuid;default:gen_random_uuid()"` - Name string `json:"name"` + ID string `json:"id" gorm:"primaryKey"` + Name string `json:"name"` // Key is the issuer key identifier. Key NKey `json:"key"` diff --git a/internal/api/ports/operators.go b/internal/api/ports/operators.go new file mode 100644 index 00000000..70035e36 --- /dev/null +++ b/internal/api/ports/operators.go @@ -0,0 +1,11 @@ +package ports + +import "github.com/zeiss/typhoon/internal/api/models" + +// Operators is the interface that wraps the methods to access data. +type Operators interface { + // GetOperator returns the operator with the given ID. + GetOperator(id string) (*models.Operator, error) + // CreateOperator creates a new operator. + CreateOperator(operator *models.Operator) error +} diff --git a/internal/api/ports/repos.go b/internal/api/ports/repos.go index 4591b9da..abeed1db 100644 --- a/internal/api/ports/repos.go +++ b/internal/api/ports/repos.go @@ -2,7 +2,7 @@ package ports // Repositories is the interface that wraps the methods to access data. type Repositories interface { - Teams - Systems Build + Systems + Teams } diff --git a/internal/api/services/api.go b/internal/api/services/api.go index 3eb2fb36..e0d9a5f2 100644 --- a/internal/api/services/api.go +++ b/internal/api/services/api.go @@ -11,15 +11,26 @@ var _ openapi.StrictServerInterface = (*ApiHandlers)(nil) // ApiHandlers ... type ApiHandlers struct { - systems *controllers.SystemsController - teams *controllers.TeamsController - version *controllers.VersionController + systems *controllers.SystemsController + teams *controllers.TeamsController + version *controllers.VersionController + operators *controllers.OperatorsController openapi.Unimplemented } // NewApiHandlers ... -func NewApiHandlers(systems *controllers.SystemsController, teams *controllers.TeamsController, version *controllers.VersionController) *ApiHandlers { - return &ApiHandlers{systems: systems, teams: teams, version: version} +func NewApiHandlers(systems *controllers.SystemsController, teams *controllers.TeamsController, version *controllers.VersionController, operators *controllers.OperatorsController) *ApiHandlers { + return &ApiHandlers{systems: systems, teams: teams, version: version, operators: operators} +} + +// CreateOperator ... +func (a *ApiHandlers) CreateOperator(ctx context.Context, req openapi.CreateOperatorRequestObject) (openapi.CreateOperatorResponseObject, error) { + operator, err := a.operators.CreateOperator(req.Body.Name) + if err != nil { + return nil, err + } + + return openapi.CreateOperator201JSONResponse(openapi.Operator{Id: &operator.ID, Name: operator.Name}), nil } // Version ... diff --git a/pkg/apis/api.go b/pkg/apis/api.go index f038f321..79577a93 100644 --- a/pkg/apis/api.go +++ b/pkg/apis/api.go @@ -10,16 +10,6 @@ type Unimplemented struct{} var _ StrictServerInterface = (*Unimplemented)(nil) -// ListKeys ... -func (u *Unimplemented) ListKeys(ctx context.Context, request ListKeysRequestObject) (ListKeysResponseObject, error) { - return nil, errors.New("not implemented") -} - -// CreateKey ... -func (u *Unimplemented) CreateKey(ctx context.Context, request CreateKeyRequestObject) (CreateKeyResponseObject, error) { - return nil, errors.New("not implemented") -} - // CreateOperator ... func (u *Unimplemented) CreateOperator(ctx context.Context, request CreateOperatorRequestObject) (CreateOperatorResponseObject, error) { return nil, errors.New("not implemented") diff --git a/pkg/apis/client.gen.go b/pkg/apis/client.gen.go index f3f3e0c7..6bf123cc 100644 --- a/pkg/apis/client.gen.go +++ b/pkg/apis/client.gen.go @@ -90,12 +90,6 @@ func WithRequestEditorFn(fn RequestEditorFn) ClientOption { // The interface specification for the client above. type ClientInterface interface { - // ListKeys request - ListKeys(ctx context.Context, params *ListKeysParams, reqEditors ...RequestEditorFn) (*http.Response, error) - - // CreateKey request - CreateKey(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) - // ListOperators request ListOperators(ctx context.Context, params *ListOperatorsParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -173,30 +167,6 @@ type ClientInterface interface { Version(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) } -func (c *Client) ListKeys(ctx context.Context, params *ListKeysParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListKeysRequest(c.Server, params) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - if err := c.applyEditors(ctx, req, reqEditors); err != nil { - return nil, err - } - return c.Client.Do(req) -} - -func (c *Client) CreateKey(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewCreateKeyRequest(c.Server) - if err != nil { - return nil, err - } - req = req.WithContext(ctx) - if err := c.applyEditors(ctx, req, reqEditors); err != nil { - return nil, err - } - return c.Client.Do(req) -} - func (c *Client) ListOperators(ctx context.Context, params *ListOperatorsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewListOperatorsRequest(c.Server, params) if err != nil { @@ -533,98 +503,6 @@ func (c *Client) Version(ctx context.Context, reqEditors ...RequestEditorFn) (*h return c.Client.Do(req) } -// NewListKeysRequest generates requests for ListKeys -func NewListKeysRequest(server string, params *ListKeysParams) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/keys") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - if params != nil { - queryValues := queryURL.Query() - - if params.Offset != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "offset", runtime.ParamLocationQuery, *params.Offset); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - if params.Limit != nil { - - if queryFrag, err := runtime.StyleParamWithLocation("form", true, "limit", runtime.ParamLocationQuery, *params.Limit); err != nil { - return nil, err - } else if parsed, err := url.ParseQuery(queryFrag); err != nil { - return nil, err - } else { - for k, v := range parsed { - for _, v2 := range v { - queryValues.Add(k, v2) - } - } - } - - } - - queryURL.RawQuery = queryValues.Encode() - } - - req, err := http.NewRequest("GET", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - -// NewCreateKeyRequest generates requests for CreateKey -func NewCreateKeyRequest(server string) (*http.Request, error) { - var err error - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/keys") - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest("POST", queryURL.String(), nil) - if err != nil { - return nil, err - } - - return req, nil -} - // NewListOperatorsRequest generates requests for ListOperators func NewListOperatorsRequest(server string, params *ListOperatorsParams) (*http.Request, error) { var err error @@ -1684,12 +1562,6 @@ func WithBaseURL(baseURL string) ClientOption { // ClientWithResponsesInterface is the interface specification for the client with responses above. type ClientWithResponsesInterface interface { - // ListKeysWithResponse request - ListKeysWithResponse(ctx context.Context, params *ListKeysParams, reqEditors ...RequestEditorFn) (*ListKeysResponse, error) - - // CreateKeyWithResponse request - CreateKeyWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*CreateKeyResponse, error) - // ListOperatorsWithResponse request ListOperatorsWithResponse(ctx context.Context, params *ListOperatorsParams, reqEditors ...RequestEditorFn) (*ListOperatorsResponse, error) @@ -1767,55 +1639,6 @@ type ClientWithResponsesInterface interface { VersionWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*VersionResponse, error) } -type ListKeysResponse struct { - Body []byte - HTTPResponse *http.Response - JSON200 *struct { - Limit *float32 `json:"limit,omitempty"` - Offset *float32 `json:"offset,omitempty"` - Results *[]KeyPair `json:"results,omitempty"` - Total *float32 `json:"total,omitempty"` - } -} - -// Status returns HTTPResponse.Status -func (r ListKeysResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} - -// StatusCode returns HTTPResponse.StatusCode -func (r ListKeysResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} - -type CreateKeyResponse struct { - Body []byte - HTTPResponse *http.Response - JSON201 *KeyPair -} - -// Status returns HTTPResponse.Status -func (r CreateKeyResponse) Status() string { - if r.HTTPResponse != nil { - return r.HTTPResponse.Status - } - return http.StatusText(0) -} - -// StatusCode returns HTTPResponse.StatusCode -func (r CreateKeyResponse) StatusCode() int { - if r.HTTPResponse != nil { - return r.HTTPResponse.StatusCode - } - return 0 -} - type ListOperatorsResponse struct { Body []byte HTTPResponse *http.Response @@ -2285,24 +2108,6 @@ func (r VersionResponse) StatusCode() int { return 0 } -// ListKeysWithResponse request returning *ListKeysResponse -func (c *ClientWithResponses) ListKeysWithResponse(ctx context.Context, params *ListKeysParams, reqEditors ...RequestEditorFn) (*ListKeysResponse, error) { - rsp, err := c.ListKeys(ctx, params, reqEditors...) - if err != nil { - return nil, err - } - return ParseListKeysResponse(rsp) -} - -// CreateKeyWithResponse request returning *CreateKeyResponse -func (c *ClientWithResponses) CreateKeyWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*CreateKeyResponse, error) { - rsp, err := c.CreateKey(ctx, reqEditors...) - if err != nil { - return nil, err - } - return ParseCreateKeyResponse(rsp) -} - // ListOperatorsWithResponse request returning *ListOperatorsResponse func (c *ClientWithResponses) ListOperatorsWithResponse(ctx context.Context, params *ListOperatorsParams, reqEditors ...RequestEditorFn) (*ListOperatorsResponse, error) { rsp, err := c.ListOperators(ctx, params, reqEditors...) @@ -2547,63 +2352,6 @@ func (c *ClientWithResponses) VersionWithResponse(ctx context.Context, reqEditor return ParseVersionResponse(rsp) } -// ParseListKeysResponse parses an HTTP response from a ListKeysWithResponse call -func ParseListKeysResponse(rsp *http.Response) (*ListKeysResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &ListKeysResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest struct { - Limit *float32 `json:"limit,omitempty"` - Offset *float32 `json:"offset,omitempty"` - Results *[]KeyPair `json:"results,omitempty"` - Total *float32 `json:"total,omitempty"` - } - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON200 = &dest - - } - - return response, nil -} - -// ParseCreateKeyResponse parses an HTTP response from a CreateKeyWithResponse call -func ParseCreateKeyResponse(rsp *http.Response) (*CreateKeyResponse, error) { - bodyBytes, err := io.ReadAll(rsp.Body) - defer func() { _ = rsp.Body.Close() }() - if err != nil { - return nil, err - } - - response := &CreateKeyResponse{ - Body: bodyBytes, - HTTPResponse: rsp, - } - - switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest KeyPair - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - - } - - return response, nil -} - // ParseListOperatorsResponse parses an HTTP response from a ListOperatorsWithResponse call func ParseListOperatorsResponse(rsp *http.Response) (*ListOperatorsResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) diff --git a/pkg/apis/models.gen.go b/pkg/apis/models.gen.go index 1e6e3da4..0d991079 100644 --- a/pkg/apis/models.gen.go +++ b/pkg/apis/models.gen.go @@ -63,10 +63,12 @@ type Operator struct { CreatedAt *time.Time `json:"createdAt,omitempty"` // DeletedAt Creation date and time - DeletedAt *time.Time `json:"deletedAt,omitempty"` - Description *string `json:"description,omitempty"` - Id *openapi_types.UUID `json:"id,omitempty"` - Name string `json:"name"` + DeletedAt *time.Time `json:"deletedAt,omitempty"` + Description *string `json:"description,omitempty"` + Id *string `json:"id,omitempty"` + Key *KeyPair `json:"key,omitempty"` + Name string `json:"name"` + SigningKeys *[]KeyPair `json:"signingKeys,omitempty"` // UpdatedAt Creation date and time UpdatedAt *time.Time `json:"updatedAt,omitempty"` @@ -199,18 +201,16 @@ type OffsetParam = int // TeamId defines model for teamId. type TeamId = openapi_types.UUID +// CreateOperator defines model for CreateOperator. +type CreateOperator struct { + ContactEmail *string `json:"contactEmail,omitempty"` + Description *string `json:"description,omitempty"` + Name string `json:"name"` +} + // CreateTeam defines model for CreateTeam. type CreateTeam = Team -// ListKeysParams defines parameters for ListKeys. -type ListKeysParams struct { - // Offset The number of items to skip before starting to collect the result set. - Offset *OffsetParam `form:"offset,omitempty" json:"offset,omitempty"` - - // Limit The numbers of items to return. - Limit *LimitParam `form:"limit,omitempty" json:"limit,omitempty"` -} - // ListOperatorsParams defines parameters for ListOperators. type ListOperatorsParams struct { // Offset The number of items to skip before starting to collect the result set. @@ -220,6 +220,13 @@ type ListOperatorsParams struct { Limit *LimitParam `form:"limit,omitempty" json:"limit,omitempty"` } +// CreateOperatorJSONBody defines parameters for CreateOperator. +type CreateOperatorJSONBody struct { + ContactEmail *string `json:"contactEmail,omitempty"` + Description *string `json:"description,omitempty"` + Name string `json:"name"` +} + // ListTeamsParams defines parameters for ListTeams. type ListTeamsParams struct { // Offset The number of items to skip before starting to collect the result set. @@ -257,7 +264,7 @@ type ListUsersParams struct { } // CreateOperatorJSONRequestBody defines body for CreateOperator for application/json ContentType. -type CreateOperatorJSONRequestBody = Operator +type CreateOperatorJSONRequestBody CreateOperatorJSONBody // CreateSystemJSONRequestBody defines body for CreateSystem for application/json ContentType. type CreateSystemJSONRequestBody = System @@ -283,47 +290,47 @@ type UpdateUserJSONRequestBody = User // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", + "VKtGAAA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/pkg/apis/server.gen.go b/pkg/apis/server.gen.go index b3f7a85b..8b2f55ec 100644 --- a/pkg/apis/server.gen.go +++ b/pkg/apis/server.gen.go @@ -15,12 +15,6 @@ import ( // ServerInterface represents all server handlers. type ServerInterface interface { - // List all NKeys - // (GET /keys) - ListKeys(c *fiber.Ctx, params ListKeysParams) error - // Creates a new NKey - // (POST /keys) - CreateKey(c *fiber.Ctx) error // List all operators // (GET /operators) ListOperators(c *fiber.Ctx, params ListOperatorsParams) error @@ -90,51 +84,6 @@ type ServerInterfaceWrapper struct { type MiddlewareFunc fiber.Handler -// ListKeys operation middleware -func (siw *ServerInterfaceWrapper) ListKeys(c *fiber.Ctx) error { - - var err error - - c.Context().SetUserValue(BearerAuthScopes, []string{"read:keys"}) - - // Parameter object where we will unmarshal all parameters from the context - var params ListKeysParams - - var query url.Values - query, err = url.ParseQuery(string(c.Request().URI().QueryString())) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for query string: %w", err).Error()) - } - - // ------------- Optional query parameter "offset" ------------- - - err = runtime.BindQueryParameter("form", true, false, "offset", query, ¶ms.Offset) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter offset: %w", err).Error()) - } - - // ------------- Optional query parameter "limit" ------------- - - err = runtime.BindQueryParameter("form", true, false, "limit", query, ¶ms.Limit) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter limit: %w", err).Error()) - } - - return siw.Handler.ListKeys(c, params) -} - -// CreateKey operation middleware -func (siw *ServerInterfaceWrapper) CreateKey(c *fiber.Ctx) error { - - c.Context().SetUserValue(CookieAuthScopes, []string{}) - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - c.Context().SetUserValue(Api_keyScopes, []string{}) - - return siw.Handler.CreateKey(c) -} - // ListOperators operation middleware func (siw *ServerInterfaceWrapper) ListOperators(c *fiber.Ctx) error { @@ -729,10 +678,6 @@ func RegisterHandlersWithOptions(router fiber.Router, si ServerInterface, option router.Use(m) } - router.Get(options.BaseURL+"/keys", wrapper.ListKeys) - - router.Post(options.BaseURL+"/keys", wrapper.CreateKey) - router.Get(options.BaseURL+"/operators", wrapper.ListOperators) router.Post(options.BaseURL+"/operators", wrapper.CreateOperator) @@ -775,44 +720,6 @@ func RegisterHandlersWithOptions(router fiber.Router, si ServerInterface, option } -type ListKeysRequestObject struct { - Params ListKeysParams -} - -type ListKeysResponseObject interface { - VisitListKeysResponse(ctx *fiber.Ctx) error -} - -type ListKeys200JSONResponse struct { - Limit *float32 `json:"limit,omitempty"` - Offset *float32 `json:"offset,omitempty"` - Results *[]KeyPair `json:"results,omitempty"` - Total *float32 `json:"total,omitempty"` -} - -func (response ListKeys200JSONResponse) VisitListKeysResponse(ctx *fiber.Ctx) error { - ctx.Response().Header.Set("Content-Type", "application/json") - ctx.Status(200) - - return ctx.JSON(&response) -} - -type CreateKeyRequestObject struct { -} - -type CreateKeyResponseObject interface { - VisitCreateKeyResponse(ctx *fiber.Ctx) error -} - -type CreateKey201JSONResponse KeyPair - -func (response CreateKey201JSONResponse) VisitCreateKeyResponse(ctx *fiber.Ctx) error { - ctx.Response().Header.Set("Content-Type", "application/json") - ctx.Status(201) - - return ctx.JSON(&response) -} - type ListOperatorsRequestObject struct { Params ListOperatorsParams } @@ -1203,12 +1110,6 @@ func (response Version200JSONResponse) VisitVersionResponse(ctx *fiber.Ctx) erro // StrictServerInterface represents all server handlers. type StrictServerInterface interface { - // List all NKeys - // (GET /keys) - ListKeys(ctx context.Context, request ListKeysRequestObject) (ListKeysResponseObject, error) - // Creates a new NKey - // (POST /keys) - CreateKey(ctx context.Context, request CreateKeyRequestObject) (CreateKeyResponseObject, error) // List all operators // (GET /operators) ListOperators(ctx context.Context, request ListOperatorsRequestObject) (ListOperatorsResponseObject, error) @@ -1284,58 +1185,6 @@ type strictHandler struct { middlewares []StrictMiddlewareFunc } -// ListKeys operation middleware -func (sh *strictHandler) ListKeys(ctx *fiber.Ctx, params ListKeysParams) error { - var request ListKeysRequestObject - - request.Params = params - - handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { - return sh.ssi.ListKeys(ctx.UserContext(), request.(ListKeysRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ListKeys") - } - - response, err := handler(ctx, request) - - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, err.Error()) - } else if validResponse, ok := response.(ListKeysResponseObject); ok { - if err := validResponse.VisitListKeysResponse(ctx); err != nil { - return fiber.NewError(fiber.StatusBadRequest, err.Error()) - } - } else if response != nil { - return fmt.Errorf("unexpected response type: %T", response) - } - return nil -} - -// CreateKey operation middleware -func (sh *strictHandler) CreateKey(ctx *fiber.Ctx) error { - var request CreateKeyRequestObject - - handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { - return sh.ssi.CreateKey(ctx.UserContext(), request.(CreateKeyRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "CreateKey") - } - - response, err := handler(ctx, request) - - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, err.Error()) - } else if validResponse, ok := response.(CreateKeyResponseObject); ok { - if err := validResponse.VisitCreateKeyResponse(ctx); err != nil { - return fiber.NewError(fiber.StatusBadRequest, err.Error()) - } - } else if response != nil { - return fmt.Errorf("unexpected response type: %T", response) - } - return nil -} - // ListOperators operation middleware func (sh *strictHandler) ListOperators(ctx *fiber.Ctx, params ListOperatorsParams) error { var request ListOperatorsRequestObject