kereru-forms/backend/internal/api/generated.go

2124 lines
69 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// Package api provides primitives to interact with the openapi HTTP API.
//
// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.4.1 DO NOT EDIT.
package api
import (
"bytes"
"compress/gzip"
"context"
"encoding/base64"
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"path"
"strings"
"time"
"github.com/getkin/kin-openapi/openapi3"
"github.com/gin-gonic/gin"
"github.com/oapi-codegen/runtime"
strictgin "github.com/oapi-codegen/runtime/strictmiddleware/gin"
openapi_types "github.com/oapi-codegen/runtime/types"
)
// Defines values for QuestionType.
const (
Boolean QuestionType = "boolean"
Date QuestionType = "date"
Number QuestionType = "number"
Select QuestionType = "select"
Text QuestionType = "text"
)
// Defines values for SignatureType.
const (
Drawn SignatureType = "drawn"
Image SignatureType = "image"
)
// Defines values for UserIdType.
const (
Email UserIdType = "email"
Guid UserIdType = "guid"
Phone UserIdType = "phone"
Username UserIdType = "username"
)
// AccessCode defines model for AccessCode.
type AccessCode struct {
Code string `json:"code"`
CreatedAt time.Time `json:"createdAt"`
FormId openapi_types.UUID `json:"formId"`
Id openapi_types.UUID `json:"id"`
Used bool `json:"used"`
UsedAt *time.Time `json:"usedAt,omitempty"`
}
// Answer defines model for Answer.
type Answer struct {
QuestionId openapi_types.UUID `json:"questionId"`
// Value Answer value. String, number, boolean or list of strings depending on the question type.
Value interface{} `json:"value"`
}
// AnswerRecord defines model for AnswerRecord.
type AnswerRecord struct {
QuestionId openapi_types.UUID `json:"questionId"`
QuestionKey string `json:"questionKey"`
// Value The captured value
Value interface{} `json:"value"`
}
// ClientTracking Client supplied tracking details. IP and user agent are captured server-side.
type ClientTracking struct {
Locale *string `json:"locale,omitempty"`
Place *string `json:"place,omitempty"`
Referer *string `json:"referer,omitempty"`
Timezone *string `json:"timezone,omitempty"`
}
// CreateAccessCodesRequest defines model for CreateAccessCodesRequest.
type CreateAccessCodesRequest struct {
Count int `json:"count"`
Prefix *string `json:"prefix,omitempty"`
}
// CreateFormRequest defines model for CreateFormRequest.
type CreateFormRequest struct {
CompanyName *string `json:"companyName,omitempty"`
ContactEmail *string `json:"contactEmail,omitempty"`
ContactPhone *string `json:"contactPhone,omitempty"`
ContactUrl *string `json:"contactUrl,omitempty"`
Description *string `json:"description,omitempty"`
ExternalReferenceLabel *string `json:"externalReferenceLabel,omitempty"`
ExternalReferenceRequired *bool `json:"externalReferenceRequired,omitempty"`
Introduction *string `json:"introduction,omitempty"`
LogoUrl *string `json:"logoUrl,omitempty"`
PdfUrl *string `json:"pdfUrl,omitempty"`
Questions []QuestionInput `json:"questions"`
RequiresAccessCode *bool `json:"requiresAccessCode,omitempty"`
SignatureRequired *bool `json:"signatureRequired,omitempty"`
Title string `json:"title"`
}
// Error defines model for Error.
type Error struct {
Code *string `json:"code,omitempty"`
Error string `json:"error"`
}
// Form defines model for Form.
type Form struct {
CompanyName *string `json:"companyName,omitempty"`
ContactEmail *string `json:"contactEmail,omitempty"`
ContactPhone *string `json:"contactPhone,omitempty"`
ContactUrl *string `json:"contactUrl,omitempty"`
CreatedAt time.Time `json:"createdAt"`
Description *string `json:"description,omitempty"`
// ExternalReferenceLabel Label shown for the external reference, for example Invoice number
ExternalReferenceLabel *string `json:"externalReferenceLabel,omitempty"`
// ExternalReferenceRequired Whether a reference identifier is required before the form can be submitted
ExternalReferenceRequired *bool `json:"externalReferenceRequired,omitempty"`
FormGroupId openapi_types.UUID `json:"formGroupId"`
Id openapi_types.UUID `json:"id"`
// Introduction Introduction section explaining purpose, background and support details
Introduction *string `json:"introduction,omitempty"`
IsActive bool `json:"isActive"`
LogoUrl *string `json:"logoUrl,omitempty"`
// PdfUrl Optional absolute URL of a prebuilt PDF form linked to this definition
PdfUrl *string `json:"pdfUrl,omitempty"`
Questions []Question `json:"questions"`
RequiresAccessCode bool `json:"requiresAccessCode"`
// SignatureRequired Whether a digital signature is captured at the end of the form
SignatureRequired *bool `json:"signatureRequired,omitempty"`
Title string `json:"title"`
UpdatedAt time.Time `json:"updatedAt"`
Version int `json:"version"`
}
// FormSummary defines model for FormSummary.
type FormSummary struct {
CreatedAt time.Time `json:"createdAt"`
Description *string `json:"description,omitempty"`
// ExternalReferenceLabel Label shown for the external reference, for example Invoice number
ExternalReferenceLabel *string `json:"externalReferenceLabel,omitempty"`
// ExternalReferenceRequired Whether a reference identifier is required before the form can be submitted
ExternalReferenceRequired *bool `json:"externalReferenceRequired,omitempty"`
// FormGroupId Groups all versions of the same logical form
FormGroupId openapi_types.UUID `json:"formGroupId"`
Id openapi_types.UUID `json:"id"`
IsActive bool `json:"isActive"`
LogoUrl *string `json:"logoUrl,omitempty"`
// PdfUrl Optional absolute URL of a prebuilt PDF form linked to this definition
PdfUrl *string `json:"pdfUrl,omitempty"`
QuestionCount int `json:"questionCount"`
Title string `json:"title"`
UpdatedAt time.Time `json:"updatedAt"`
Version int `json:"version"`
}
// Health defines model for Health.
type Health struct {
Status string `json:"status"`
UptimeSeconds *int64 `json:"uptimeSeconds,omitempty"`
Version string `json:"version"`
}
// Question defines model for Question.
type Question struct {
Description *string `json:"description,omitempty"`
Id openapi_types.UUID `json:"id"`
// Key Stable machine key for this question within the form
Key string `json:"key"`
// Label The question text (may be multiline, no formatting directives)
Label string `json:"label"`
// MaxValue Maximum allowed value for `number` questions
MaxValue *float32 `json:"maxValue,omitempty"`
// MinValue Minimum allowed value for `number` questions
MinValue *float32 `json:"minValue,omitempty"`
// Multiline Whether a `text` answer may span multiple lines
Multiline *bool `json:"multiline,omitempty"`
// Options Present for `select` questions
Options *[]QuestionOption `json:"options,omitempty"`
Placeholder *string `json:"placeholder,omitempty"`
Position int `json:"position"`
Required bool `json:"required"`
// Type * `boolean` – true/false
// * `number` – numeric answer
// * `select` – one option from a configured list
// * `text` – free-form text (single or multiline)
// * `date` - calendar date in `YYYY-MM-DD` form
Type QuestionType `json:"type"`
}
// QuestionInput defines model for QuestionInput.
type QuestionInput struct {
Description *string `json:"description,omitempty"`
Key string `json:"key"`
Label string `json:"label"`
MaxValue *float32 `json:"maxValue,omitempty"`
MinValue *float32 `json:"minValue,omitempty"`
Multiline *bool `json:"multiline,omitempty"`
Options *[]QuestionOption `json:"options,omitempty"`
Placeholder *string `json:"placeholder,omitempty"`
Required bool `json:"required"`
// Type * `boolean` – true/false
// * `number` – numeric answer
// * `select` – one option from a configured list
// * `text` – free-form text (single or multiline)
// * `date` - calendar date in `YYYY-MM-DD` form
Type QuestionType `json:"type"`
}
// QuestionOption defines model for QuestionOption.
type QuestionOption struct {
Label string `json:"label"`
Value string `json:"value"`
}
// QuestionType * `boolean` – true/false
// * `number` – numeric answer
// * `select` – one option from a configured list
// * `text` – free-form text (single or multiline)
// * `date` - calendar date in `YYYY-MM-DD` form
type QuestionType string
// Signature defines model for Signature.
type Signature struct {
DataUrl string `json:"dataUrl"`
Name string `json:"name"`
SignedAt time.Time `json:"signedAt"`
Title *string `json:"title,omitempty"`
// Type * `drawn` - signature drawn in the browser
// * `image` - uploaded image containing a signature
Type SignatureType `json:"type"`
}
// SignatureInput defines model for SignatureInput.
type SignatureInput struct {
// DataUrl PNG or JPEG image data URL (maximum decoded size 2 MB)
DataUrl string `json:"dataUrl"`
// Name Name of the person signing
Name string `json:"name"`
// Title Optional title of the person signing
Title *string `json:"title,omitempty"`
// Type * `drawn` - signature drawn in the browser
// * `image` - uploaded image containing a signature
Type SignatureType `json:"type"`
}
// SignatureType * `drawn` - signature drawn in the browser
// * `image` - uploaded image containing a signature
type SignatureType string
// Submission defines model for Submission.
type Submission struct {
Answers []AnswerRecord `json:"answers"`
ExternalReference *string `json:"externalReference,omitempty"`
FormId openapi_types.UUID `json:"formId"`
FormVersion int `json:"formVersion"`
Id openapi_types.UUID `json:"id"`
// OfflinePdfName Present when the respondent uploaded a completed offline PDF
OfflinePdfName *string `json:"offlinePdfName,omitempty"`
Signature *Signature `json:"signature,omitempty"`
SubmittedAt time.Time `json:"submittedAt"`
Tracking *Tracking `json:"tracking,omitempty"`
UserId string `json:"userId"`
UserIdType UserIdType `json:"userIdType"`
}
// SubmissionSummary defines model for SubmissionSummary.
type SubmissionSummary struct {
ExternalReference *string `json:"externalReference,omitempty"`
FormId openapi_types.UUID `json:"formId"`
FormVersion int `json:"formVersion"`
Id openapi_types.UUID `json:"id"`
SubmittedAt time.Time `json:"submittedAt"`
UserId string `json:"userId"`
UserIdType UserIdType `json:"userIdType"`
}
// SubmitFormRequest defines model for SubmitFormRequest.
type SubmitFormRequest struct {
// AccessCode Required when the form has `requiresAccessCode = true`
AccessCode *string `json:"accessCode,omitempty"`
Answers []Answer `json:"answers"`
// ExternalReference External reference identifier used to link this response to a record in
// another system, for example an invoice, account or policy number.
ExternalReference *string `json:"externalReference,omitempty"`
// OfflinePdf Base64 data URL of a PDF completed offline (for example
// `data:application/pdf;base64,...`). Maximum decoded size is 10 MB.
OfflinePdf *string `json:"offlinePdf,omitempty"`
// OfflinePdfName Original filename of the uploaded offline PDF
OfflinePdfName *string `json:"offlinePdfName,omitempty"`
Signature *SignatureInput `json:"signature,omitempty"`
// Tracking Client supplied tracking details. IP and user agent are captured server-side.
Tracking *ClientTracking `json:"tracking,omitempty"`
// UserId Respondent identifier captured at the start (email, username, phone or GUID)
UserId string `json:"userId"`
UserIdType UserIdType `json:"userIdType"`
}
// Tracking defines model for Tracking.
type Tracking struct {
IpAddress *string `json:"ipAddress,omitempty"`
Locale *string `json:"locale,omitempty"`
Place *string `json:"place,omitempty"`
Referer *string `json:"referer,omitempty"`
Timezone *string `json:"timezone,omitempty"`
UserAgent *string `json:"userAgent,omitempty"`
}
// UpdateFormRequest defines model for UpdateFormRequest.
type UpdateFormRequest struct {
CompanyName *string `json:"companyName,omitempty"`
ContactEmail *string `json:"contactEmail,omitempty"`
ContactPhone *string `json:"contactPhone,omitempty"`
ContactUrl *string `json:"contactUrl,omitempty"`
Description *string `json:"description,omitempty"`
ExternalReferenceLabel *string `json:"externalReferenceLabel,omitempty"`
ExternalReferenceRequired *bool `json:"externalReferenceRequired,omitempty"`
Introduction *string `json:"introduction,omitempty"`
LogoUrl *string `json:"logoUrl,omitempty"`
PdfUrl *string `json:"pdfUrl,omitempty"`
Questions []QuestionInput `json:"questions"`
RequiresAccessCode *bool `json:"requiresAccessCode,omitempty"`
SignatureRequired *bool `json:"signatureRequired,omitempty"`
Title string `json:"title"`
}
// UserIdType defines model for UserIdType.
type UserIdType string
// FormId defines model for FormId.
type FormId = openapi_types.UUID
// ListFormsParams defines parameters for ListForms.
type ListFormsParams struct {
IncludeInactive *bool `form:"includeInactive,omitempty" json:"includeInactive,omitempty"`
ActiveOnly *bool `form:"activeOnly,omitempty" json:"activeOnly,omitempty"`
}
// CreateFormJSONRequestBody defines body for CreateForm for application/json ContentType.
type CreateFormJSONRequestBody = CreateFormRequest
// UpdateFormJSONRequestBody defines body for UpdateForm for application/json ContentType.
type UpdateFormJSONRequestBody = UpdateFormRequest
// CreateAccessCodesJSONRequestBody defines body for CreateAccessCodes for application/json ContentType.
type CreateAccessCodesJSONRequestBody = CreateAccessCodesRequest
// SubmitFormJSONRequestBody defines body for SubmitForm for application/json ContentType.
type SubmitFormJSONRequestBody = SubmitFormRequest
// ServerInterface represents all server handlers.
type ServerInterface interface {
// List forms
// (GET /forms)
ListForms(c *gin.Context, params ListFormsParams)
// Create a form
// (POST /forms)
CreateForm(c *gin.Context)
// Delete a form definition
// (DELETE /forms/{formId})
DeleteForm(c *gin.Context, formId FormId)
// Get a form by id
// (GET /forms/{formId})
GetForm(c *gin.Context, formId FormId)
// Update a form definition
// (PUT /forms/{formId})
UpdateForm(c *gin.Context, formId FormId)
// List access codes for a form
// (GET /forms/{formId}/access-codes)
ListAccessCodes(c *gin.Context, formId FormId)
// Create one or more access codes for a form
// (POST /forms/{formId}/access-codes)
CreateAccessCodes(c *gin.Context, formId FormId)
// Activate a form
// (POST /forms/{formId}/activate)
ActivateForm(c *gin.Context, formId FormId)
// Inactivate a form
// (POST /forms/{formId}/inactivate)
InactivateForm(c *gin.Context, formId FormId)
// Download a PDF rendering of the form definition
// (GET /forms/{formId}/pdf)
GetFormPdf(c *gin.Context, formId FormId)
// List submissions for a form (management)
// (GET /forms/{formId}/submissions)
ListFormSubmissions(c *gin.Context, formId FormId)
// Submit an answer set for a form
// (POST /forms/{formId}/submissions)
SubmitForm(c *gin.Context, formId FormId)
// Create a new version of a form
// (POST /forms/{formId}/versions)
CreateFormVersion(c *gin.Context, formId FormId)
// Service health
// (GET /health)
GetHealth(c *gin.Context)
// Get a submission by id (management)
// (GET /submissions/{submissionId})
GetSubmission(c *gin.Context, submissionId openapi_types.UUID)
// Download the offline PDF uploaded with a submission
// (GET /submissions/{submissionId}/offline-pdf)
GetSubmissionOfflinePdf(c *gin.Context, submissionId openapi_types.UUID)
}
// ServerInterfaceWrapper converts contexts to parameters.
type ServerInterfaceWrapper struct {
Handler ServerInterface
HandlerMiddlewares []MiddlewareFunc
ErrorHandler func(*gin.Context, error, int)
}
type MiddlewareFunc func(c *gin.Context)
// ListForms operation middleware
func (siw *ServerInterfaceWrapper) ListForms(c *gin.Context) {
var err error
// Parameter object where we will unmarshal all parameters from the context
var params ListFormsParams
// ------------- Optional query parameter "includeInactive" -------------
err = runtime.BindQueryParameter("form", true, false, "includeInactive", c.Request.URL.Query(), &params.IncludeInactive)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter includeInactive: %w", err), http.StatusBadRequest)
return
}
// ------------- Optional query parameter "activeOnly" -------------
err = runtime.BindQueryParameter("form", true, false, "activeOnly", c.Request.URL.Query(), &params.ActiveOnly)
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter activeOnly: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.ListForms(c, params)
}
// CreateForm operation middleware
func (siw *ServerInterfaceWrapper) CreateForm(c *gin.Context) {
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.CreateForm(c)
}
// DeleteForm operation middleware
func (siw *ServerInterfaceWrapper) DeleteForm(c *gin.Context) {
var err error
// ------------- Path parameter "formId" -------------
var formId FormId
err = runtime.BindStyledParameterWithOptions("simple", "formId", c.Param("formId"), &formId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter formId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.DeleteForm(c, formId)
}
// GetForm operation middleware
func (siw *ServerInterfaceWrapper) GetForm(c *gin.Context) {
var err error
// ------------- Path parameter "formId" -------------
var formId FormId
err = runtime.BindStyledParameterWithOptions("simple", "formId", c.Param("formId"), &formId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter formId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.GetForm(c, formId)
}
// UpdateForm operation middleware
func (siw *ServerInterfaceWrapper) UpdateForm(c *gin.Context) {
var err error
// ------------- Path parameter "formId" -------------
var formId FormId
err = runtime.BindStyledParameterWithOptions("simple", "formId", c.Param("formId"), &formId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter formId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.UpdateForm(c, formId)
}
// ListAccessCodes operation middleware
func (siw *ServerInterfaceWrapper) ListAccessCodes(c *gin.Context) {
var err error
// ------------- Path parameter "formId" -------------
var formId FormId
err = runtime.BindStyledParameterWithOptions("simple", "formId", c.Param("formId"), &formId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter formId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.ListAccessCodes(c, formId)
}
// CreateAccessCodes operation middleware
func (siw *ServerInterfaceWrapper) CreateAccessCodes(c *gin.Context) {
var err error
// ------------- Path parameter "formId" -------------
var formId FormId
err = runtime.BindStyledParameterWithOptions("simple", "formId", c.Param("formId"), &formId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter formId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.CreateAccessCodes(c, formId)
}
// ActivateForm operation middleware
func (siw *ServerInterfaceWrapper) ActivateForm(c *gin.Context) {
var err error
// ------------- Path parameter "formId" -------------
var formId FormId
err = runtime.BindStyledParameterWithOptions("simple", "formId", c.Param("formId"), &formId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter formId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.ActivateForm(c, formId)
}
// InactivateForm operation middleware
func (siw *ServerInterfaceWrapper) InactivateForm(c *gin.Context) {
var err error
// ------------- Path parameter "formId" -------------
var formId FormId
err = runtime.BindStyledParameterWithOptions("simple", "formId", c.Param("formId"), &formId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter formId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.InactivateForm(c, formId)
}
// GetFormPdf operation middleware
func (siw *ServerInterfaceWrapper) GetFormPdf(c *gin.Context) {
var err error
// ------------- Path parameter "formId" -------------
var formId FormId
err = runtime.BindStyledParameterWithOptions("simple", "formId", c.Param("formId"), &formId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter formId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.GetFormPdf(c, formId)
}
// ListFormSubmissions operation middleware
func (siw *ServerInterfaceWrapper) ListFormSubmissions(c *gin.Context) {
var err error
// ------------- Path parameter "formId" -------------
var formId FormId
err = runtime.BindStyledParameterWithOptions("simple", "formId", c.Param("formId"), &formId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter formId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.ListFormSubmissions(c, formId)
}
// SubmitForm operation middleware
func (siw *ServerInterfaceWrapper) SubmitForm(c *gin.Context) {
var err error
// ------------- Path parameter "formId" -------------
var formId FormId
err = runtime.BindStyledParameterWithOptions("simple", "formId", c.Param("formId"), &formId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter formId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.SubmitForm(c, formId)
}
// CreateFormVersion operation middleware
func (siw *ServerInterfaceWrapper) CreateFormVersion(c *gin.Context) {
var err error
// ------------- Path parameter "formId" -------------
var formId FormId
err = runtime.BindStyledParameterWithOptions("simple", "formId", c.Param("formId"), &formId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter formId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.CreateFormVersion(c, formId)
}
// GetHealth operation middleware
func (siw *ServerInterfaceWrapper) GetHealth(c *gin.Context) {
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.GetHealth(c)
}
// GetSubmission operation middleware
func (siw *ServerInterfaceWrapper) GetSubmission(c *gin.Context) {
var err error
// ------------- Path parameter "submissionId" -------------
var submissionId openapi_types.UUID
err = runtime.BindStyledParameterWithOptions("simple", "submissionId", c.Param("submissionId"), &submissionId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter submissionId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.GetSubmission(c, submissionId)
}
// GetSubmissionOfflinePdf operation middleware
func (siw *ServerInterfaceWrapper) GetSubmissionOfflinePdf(c *gin.Context) {
var err error
// ------------- Path parameter "submissionId" -------------
var submissionId openapi_types.UUID
err = runtime.BindStyledParameterWithOptions("simple", "submissionId", c.Param("submissionId"), &submissionId, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter submissionId: %w", err), http.StatusBadRequest)
return
}
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.GetSubmissionOfflinePdf(c, submissionId)
}
// GinServerOptions provides options for the Gin server.
type GinServerOptions struct {
BaseURL string
Middlewares []MiddlewareFunc
ErrorHandler func(*gin.Context, error, int)
}
// RegisterHandlers creates http.Handler with routing matching OpenAPI spec.
func RegisterHandlers(router gin.IRouter, si ServerInterface) {
RegisterHandlersWithOptions(router, si, GinServerOptions{})
}
// RegisterHandlersWithOptions creates http.Handler with additional options
func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options GinServerOptions) {
errorHandler := options.ErrorHandler
if errorHandler == nil {
errorHandler = func(c *gin.Context, err error, statusCode int) {
c.JSON(statusCode, gin.H{"msg": err.Error()})
}
}
wrapper := ServerInterfaceWrapper{
Handler: si,
HandlerMiddlewares: options.Middlewares,
ErrorHandler: errorHandler,
}
router.GET(options.BaseURL+"/forms", wrapper.ListForms)
router.POST(options.BaseURL+"/forms", wrapper.CreateForm)
router.DELETE(options.BaseURL+"/forms/:formId", wrapper.DeleteForm)
router.GET(options.BaseURL+"/forms/:formId", wrapper.GetForm)
router.PUT(options.BaseURL+"/forms/:formId", wrapper.UpdateForm)
router.GET(options.BaseURL+"/forms/:formId/access-codes", wrapper.ListAccessCodes)
router.POST(options.BaseURL+"/forms/:formId/access-codes", wrapper.CreateAccessCodes)
router.POST(options.BaseURL+"/forms/:formId/activate", wrapper.ActivateForm)
router.POST(options.BaseURL+"/forms/:formId/inactivate", wrapper.InactivateForm)
router.GET(options.BaseURL+"/forms/:formId/pdf", wrapper.GetFormPdf)
router.GET(options.BaseURL+"/forms/:formId/submissions", wrapper.ListFormSubmissions)
router.POST(options.BaseURL+"/forms/:formId/submissions", wrapper.SubmitForm)
router.POST(options.BaseURL+"/forms/:formId/versions", wrapper.CreateFormVersion)
router.GET(options.BaseURL+"/health", wrapper.GetHealth)
router.GET(options.BaseURL+"/submissions/:submissionId", wrapper.GetSubmission)
router.GET(options.BaseURL+"/submissions/:submissionId/offline-pdf", wrapper.GetSubmissionOfflinePdf)
}
type ErrorJSONResponse Error
type ListFormsRequestObject struct {
Params ListFormsParams
}
type ListFormsResponseObject interface {
VisitListFormsResponse(w http.ResponseWriter) error
}
type ListForms200JSONResponse []FormSummary
func (response ListForms200JSONResponse) VisitListFormsResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type ListForms500JSONResponse struct{ ErrorJSONResponse }
func (response ListForms500JSONResponse) VisitListFormsResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type CreateFormRequestObject struct {
Body *CreateFormJSONRequestBody
}
type CreateFormResponseObject interface {
VisitCreateFormResponse(w http.ResponseWriter) error
}
type CreateForm201JSONResponse Form
func (response CreateForm201JSONResponse) VisitCreateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(201)
return json.NewEncoder(w).Encode(response)
}
type CreateForm400JSONResponse struct{ ErrorJSONResponse }
func (response CreateForm400JSONResponse) VisitCreateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(400)
return json.NewEncoder(w).Encode(response)
}
type CreateForm500JSONResponse Error
func (response CreateForm500JSONResponse) VisitCreateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type DeleteFormRequestObject struct {
FormId FormId `json:"formId"`
}
type DeleteFormResponseObject interface {
VisitDeleteFormResponse(w http.ResponseWriter) error
}
type DeleteForm204Response struct {
}
func (response DeleteForm204Response) VisitDeleteFormResponse(w http.ResponseWriter) error {
w.WriteHeader(204)
return nil
}
type DeleteForm404JSONResponse struct{ ErrorJSONResponse }
func (response DeleteForm404JSONResponse) VisitDeleteFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type DeleteForm500JSONResponse Error
func (response DeleteForm500JSONResponse) VisitDeleteFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type GetFormRequestObject struct {
FormId FormId `json:"formId"`
}
type GetFormResponseObject interface {
VisitGetFormResponse(w http.ResponseWriter) error
}
type GetForm200JSONResponse Form
func (response GetForm200JSONResponse) VisitGetFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type GetForm404JSONResponse struct{ ErrorJSONResponse }
func (response GetForm404JSONResponse) VisitGetFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type GetForm500JSONResponse Error
func (response GetForm500JSONResponse) VisitGetFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type UpdateFormRequestObject struct {
FormId FormId `json:"formId"`
Body *UpdateFormJSONRequestBody
}
type UpdateFormResponseObject interface {
VisitUpdateFormResponse(w http.ResponseWriter) error
}
type UpdateForm200JSONResponse Form
func (response UpdateForm200JSONResponse) VisitUpdateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type UpdateForm400JSONResponse struct{ ErrorJSONResponse }
func (response UpdateForm400JSONResponse) VisitUpdateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(400)
return json.NewEncoder(w).Encode(response)
}
type UpdateForm404JSONResponse Error
func (response UpdateForm404JSONResponse) VisitUpdateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type UpdateForm500JSONResponse Error
func (response UpdateForm500JSONResponse) VisitUpdateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type ListAccessCodesRequestObject struct {
FormId FormId `json:"formId"`
}
type ListAccessCodesResponseObject interface {
VisitListAccessCodesResponse(w http.ResponseWriter) error
}
type ListAccessCodes200JSONResponse []AccessCode
func (response ListAccessCodes200JSONResponse) VisitListAccessCodesResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type ListAccessCodes404JSONResponse struct{ ErrorJSONResponse }
func (response ListAccessCodes404JSONResponse) VisitListAccessCodesResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type ListAccessCodes500JSONResponse Error
func (response ListAccessCodes500JSONResponse) VisitListAccessCodesResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type CreateAccessCodesRequestObject struct {
FormId FormId `json:"formId"`
Body *CreateAccessCodesJSONRequestBody
}
type CreateAccessCodesResponseObject interface {
VisitCreateAccessCodesResponse(w http.ResponseWriter) error
}
type CreateAccessCodes201JSONResponse []AccessCode
func (response CreateAccessCodes201JSONResponse) VisitCreateAccessCodesResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(201)
return json.NewEncoder(w).Encode(response)
}
type CreateAccessCodes400JSONResponse struct{ ErrorJSONResponse }
func (response CreateAccessCodes400JSONResponse) VisitCreateAccessCodesResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(400)
return json.NewEncoder(w).Encode(response)
}
type CreateAccessCodes404JSONResponse Error
func (response CreateAccessCodes404JSONResponse) VisitCreateAccessCodesResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type CreateAccessCodes500JSONResponse Error
func (response CreateAccessCodes500JSONResponse) VisitCreateAccessCodesResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type ActivateFormRequestObject struct {
FormId FormId `json:"formId"`
}
type ActivateFormResponseObject interface {
VisitActivateFormResponse(w http.ResponseWriter) error
}
type ActivateForm200JSONResponse Form
func (response ActivateForm200JSONResponse) VisitActivateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type ActivateForm404JSONResponse struct{ ErrorJSONResponse }
func (response ActivateForm404JSONResponse) VisitActivateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type ActivateForm500JSONResponse Error
func (response ActivateForm500JSONResponse) VisitActivateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type InactivateFormRequestObject struct {
FormId FormId `json:"formId"`
}
type InactivateFormResponseObject interface {
VisitInactivateFormResponse(w http.ResponseWriter) error
}
type InactivateForm200JSONResponse Form
func (response InactivateForm200JSONResponse) VisitInactivateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type InactivateForm404JSONResponse struct{ ErrorJSONResponse }
func (response InactivateForm404JSONResponse) VisitInactivateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type InactivateForm500JSONResponse Error
func (response InactivateForm500JSONResponse) VisitInactivateFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type GetFormPdfRequestObject struct {
FormId FormId `json:"formId"`
}
type GetFormPdfResponseObject interface {
VisitGetFormPdfResponse(w http.ResponseWriter) error
}
type GetFormPdf200ApplicationpdfResponse struct {
Body io.Reader
ContentLength int64
}
func (response GetFormPdf200ApplicationpdfResponse) VisitGetFormPdfResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/pdf")
if response.ContentLength != 0 {
w.Header().Set("Content-Length", fmt.Sprint(response.ContentLength))
}
w.WriteHeader(200)
if closer, ok := response.Body.(io.ReadCloser); ok {
defer closer.Close()
}
_, err := io.Copy(w, response.Body)
return err
}
type GetFormPdf404JSONResponse struct{ ErrorJSONResponse }
func (response GetFormPdf404JSONResponse) VisitGetFormPdfResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type GetFormPdf500JSONResponse Error
func (response GetFormPdf500JSONResponse) VisitGetFormPdfResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type ListFormSubmissionsRequestObject struct {
FormId FormId `json:"formId"`
}
type ListFormSubmissionsResponseObject interface {
VisitListFormSubmissionsResponse(w http.ResponseWriter) error
}
type ListFormSubmissions200JSONResponse []SubmissionSummary
func (response ListFormSubmissions200JSONResponse) VisitListFormSubmissionsResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type ListFormSubmissions404JSONResponse struct{ ErrorJSONResponse }
func (response ListFormSubmissions404JSONResponse) VisitListFormSubmissionsResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type ListFormSubmissions500JSONResponse Error
func (response ListFormSubmissions500JSONResponse) VisitListFormSubmissionsResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type SubmitFormRequestObject struct {
FormId FormId `json:"formId"`
Body *SubmitFormJSONRequestBody
}
type SubmitFormResponseObject interface {
VisitSubmitFormResponse(w http.ResponseWriter) error
}
type SubmitForm201JSONResponse Submission
func (response SubmitForm201JSONResponse) VisitSubmitFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(201)
return json.NewEncoder(w).Encode(response)
}
type SubmitForm400JSONResponse struct{ ErrorJSONResponse }
func (response SubmitForm400JSONResponse) VisitSubmitFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(400)
return json.NewEncoder(w).Encode(response)
}
type SubmitForm404JSONResponse Error
func (response SubmitForm404JSONResponse) VisitSubmitFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type SubmitForm409JSONResponse Error
func (response SubmitForm409JSONResponse) VisitSubmitFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(409)
return json.NewEncoder(w).Encode(response)
}
type SubmitForm410JSONResponse Error
func (response SubmitForm410JSONResponse) VisitSubmitFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(410)
return json.NewEncoder(w).Encode(response)
}
type SubmitForm500JSONResponse Error
func (response SubmitForm500JSONResponse) VisitSubmitFormResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type CreateFormVersionRequestObject struct {
FormId FormId `json:"formId"`
}
type CreateFormVersionResponseObject interface {
VisitCreateFormVersionResponse(w http.ResponseWriter) error
}
type CreateFormVersion201JSONResponse Form
func (response CreateFormVersion201JSONResponse) VisitCreateFormVersionResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(201)
return json.NewEncoder(w).Encode(response)
}
type CreateFormVersion404JSONResponse struct{ ErrorJSONResponse }
func (response CreateFormVersion404JSONResponse) VisitCreateFormVersionResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type CreateFormVersion500JSONResponse Error
func (response CreateFormVersion500JSONResponse) VisitCreateFormVersionResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type GetHealthRequestObject struct {
}
type GetHealthResponseObject interface {
VisitGetHealthResponse(w http.ResponseWriter) error
}
type GetHealth200JSONResponse Health
func (response GetHealth200JSONResponse) VisitGetHealthResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type GetSubmissionRequestObject struct {
SubmissionId openapi_types.UUID `json:"submissionId"`
}
type GetSubmissionResponseObject interface {
VisitGetSubmissionResponse(w http.ResponseWriter) error
}
type GetSubmission200JSONResponse Submission
func (response GetSubmission200JSONResponse) VisitGetSubmissionResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type GetSubmission404JSONResponse struct{ ErrorJSONResponse }
func (response GetSubmission404JSONResponse) VisitGetSubmissionResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type GetSubmission500JSONResponse Error
func (response GetSubmission500JSONResponse) VisitGetSubmissionResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
type GetSubmissionOfflinePdfRequestObject struct {
SubmissionId openapi_types.UUID `json:"submissionId"`
}
type GetSubmissionOfflinePdfResponseObject interface {
VisitGetSubmissionOfflinePdfResponse(w http.ResponseWriter) error
}
type GetSubmissionOfflinePdf200ApplicationpdfResponse struct {
Body io.Reader
ContentLength int64
}
func (response GetSubmissionOfflinePdf200ApplicationpdfResponse) VisitGetSubmissionOfflinePdfResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/pdf")
if response.ContentLength != 0 {
w.Header().Set("Content-Length", fmt.Sprint(response.ContentLength))
}
w.WriteHeader(200)
if closer, ok := response.Body.(io.ReadCloser); ok {
defer closer.Close()
}
_, err := io.Copy(w, response.Body)
return err
}
type GetSubmissionOfflinePdf404JSONResponse struct{ ErrorJSONResponse }
func (response GetSubmissionOfflinePdf404JSONResponse) VisitGetSubmissionOfflinePdfResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(404)
return json.NewEncoder(w).Encode(response)
}
type GetSubmissionOfflinePdf500JSONResponse Error
func (response GetSubmissionOfflinePdf500JSONResponse) VisitGetSubmissionOfflinePdfResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(500)
return json.NewEncoder(w).Encode(response)
}
// StrictServerInterface represents all server handlers.
type StrictServerInterface interface {
// List forms
// (GET /forms)
ListForms(ctx context.Context, request ListFormsRequestObject) (ListFormsResponseObject, error)
// Create a form
// (POST /forms)
CreateForm(ctx context.Context, request CreateFormRequestObject) (CreateFormResponseObject, error)
// Delete a form definition
// (DELETE /forms/{formId})
DeleteForm(ctx context.Context, request DeleteFormRequestObject) (DeleteFormResponseObject, error)
// Get a form by id
// (GET /forms/{formId})
GetForm(ctx context.Context, request GetFormRequestObject) (GetFormResponseObject, error)
// Update a form definition
// (PUT /forms/{formId})
UpdateForm(ctx context.Context, request UpdateFormRequestObject) (UpdateFormResponseObject, error)
// List access codes for a form
// (GET /forms/{formId}/access-codes)
ListAccessCodes(ctx context.Context, request ListAccessCodesRequestObject) (ListAccessCodesResponseObject, error)
// Create one or more access codes for a form
// (POST /forms/{formId}/access-codes)
CreateAccessCodes(ctx context.Context, request CreateAccessCodesRequestObject) (CreateAccessCodesResponseObject, error)
// Activate a form
// (POST /forms/{formId}/activate)
ActivateForm(ctx context.Context, request ActivateFormRequestObject) (ActivateFormResponseObject, error)
// Inactivate a form
// (POST /forms/{formId}/inactivate)
InactivateForm(ctx context.Context, request InactivateFormRequestObject) (InactivateFormResponseObject, error)
// Download a PDF rendering of the form definition
// (GET /forms/{formId}/pdf)
GetFormPdf(ctx context.Context, request GetFormPdfRequestObject) (GetFormPdfResponseObject, error)
// List submissions for a form (management)
// (GET /forms/{formId}/submissions)
ListFormSubmissions(ctx context.Context, request ListFormSubmissionsRequestObject) (ListFormSubmissionsResponseObject, error)
// Submit an answer set for a form
// (POST /forms/{formId}/submissions)
SubmitForm(ctx context.Context, request SubmitFormRequestObject) (SubmitFormResponseObject, error)
// Create a new version of a form
// (POST /forms/{formId}/versions)
CreateFormVersion(ctx context.Context, request CreateFormVersionRequestObject) (CreateFormVersionResponseObject, error)
// Service health
// (GET /health)
GetHealth(ctx context.Context, request GetHealthRequestObject) (GetHealthResponseObject, error)
// Get a submission by id (management)
// (GET /submissions/{submissionId})
GetSubmission(ctx context.Context, request GetSubmissionRequestObject) (GetSubmissionResponseObject, error)
// Download the offline PDF uploaded with a submission
// (GET /submissions/{submissionId}/offline-pdf)
GetSubmissionOfflinePdf(ctx context.Context, request GetSubmissionOfflinePdfRequestObject) (GetSubmissionOfflinePdfResponseObject, error)
}
type StrictHandlerFunc = strictgin.StrictGinHandlerFunc
type StrictMiddlewareFunc = strictgin.StrictGinMiddlewareFunc
func NewStrictHandler(ssi StrictServerInterface, middlewares []StrictMiddlewareFunc) ServerInterface {
return &strictHandler{ssi: ssi, middlewares: middlewares}
}
type strictHandler struct {
ssi StrictServerInterface
middlewares []StrictMiddlewareFunc
}
// ListForms operation middleware
func (sh *strictHandler) ListForms(ctx *gin.Context, params ListFormsParams) {
var request ListFormsRequestObject
request.Params = params
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.ListForms(ctx, request.(ListFormsRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "ListForms")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(ListFormsResponseObject); ok {
if err := validResponse.VisitListFormsResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// CreateForm operation middleware
func (sh *strictHandler) CreateForm(ctx *gin.Context) {
var request CreateFormRequestObject
var body CreateFormJSONRequestBody
if err := ctx.ShouldBindJSON(&body); err != nil {
ctx.Status(http.StatusBadRequest)
ctx.Error(err)
return
}
request.Body = &body
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.CreateForm(ctx, request.(CreateFormRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "CreateForm")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(CreateFormResponseObject); ok {
if err := validResponse.VisitCreateFormResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// DeleteForm operation middleware
func (sh *strictHandler) DeleteForm(ctx *gin.Context, formId FormId) {
var request DeleteFormRequestObject
request.FormId = formId
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.DeleteForm(ctx, request.(DeleteFormRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "DeleteForm")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(DeleteFormResponseObject); ok {
if err := validResponse.VisitDeleteFormResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// GetForm operation middleware
func (sh *strictHandler) GetForm(ctx *gin.Context, formId FormId) {
var request GetFormRequestObject
request.FormId = formId
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.GetForm(ctx, request.(GetFormRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetForm")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(GetFormResponseObject); ok {
if err := validResponse.VisitGetFormResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// UpdateForm operation middleware
func (sh *strictHandler) UpdateForm(ctx *gin.Context, formId FormId) {
var request UpdateFormRequestObject
request.FormId = formId
var body UpdateFormJSONRequestBody
if err := ctx.ShouldBindJSON(&body); err != nil {
ctx.Status(http.StatusBadRequest)
ctx.Error(err)
return
}
request.Body = &body
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.UpdateForm(ctx, request.(UpdateFormRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "UpdateForm")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(UpdateFormResponseObject); ok {
if err := validResponse.VisitUpdateFormResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// ListAccessCodes operation middleware
func (sh *strictHandler) ListAccessCodes(ctx *gin.Context, formId FormId) {
var request ListAccessCodesRequestObject
request.FormId = formId
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.ListAccessCodes(ctx, request.(ListAccessCodesRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "ListAccessCodes")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(ListAccessCodesResponseObject); ok {
if err := validResponse.VisitListAccessCodesResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// CreateAccessCodes operation middleware
func (sh *strictHandler) CreateAccessCodes(ctx *gin.Context, formId FormId) {
var request CreateAccessCodesRequestObject
request.FormId = formId
var body CreateAccessCodesJSONRequestBody
if err := ctx.ShouldBindJSON(&body); err != nil {
ctx.Status(http.StatusBadRequest)
ctx.Error(err)
return
}
request.Body = &body
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.CreateAccessCodes(ctx, request.(CreateAccessCodesRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "CreateAccessCodes")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(CreateAccessCodesResponseObject); ok {
if err := validResponse.VisitCreateAccessCodesResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// ActivateForm operation middleware
func (sh *strictHandler) ActivateForm(ctx *gin.Context, formId FormId) {
var request ActivateFormRequestObject
request.FormId = formId
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.ActivateForm(ctx, request.(ActivateFormRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "ActivateForm")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(ActivateFormResponseObject); ok {
if err := validResponse.VisitActivateFormResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// InactivateForm operation middleware
func (sh *strictHandler) InactivateForm(ctx *gin.Context, formId FormId) {
var request InactivateFormRequestObject
request.FormId = formId
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.InactivateForm(ctx, request.(InactivateFormRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "InactivateForm")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(InactivateFormResponseObject); ok {
if err := validResponse.VisitInactivateFormResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// GetFormPdf operation middleware
func (sh *strictHandler) GetFormPdf(ctx *gin.Context, formId FormId) {
var request GetFormPdfRequestObject
request.FormId = formId
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.GetFormPdf(ctx, request.(GetFormPdfRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetFormPdf")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(GetFormPdfResponseObject); ok {
if err := validResponse.VisitGetFormPdfResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// ListFormSubmissions operation middleware
func (sh *strictHandler) ListFormSubmissions(ctx *gin.Context, formId FormId) {
var request ListFormSubmissionsRequestObject
request.FormId = formId
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.ListFormSubmissions(ctx, request.(ListFormSubmissionsRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "ListFormSubmissions")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(ListFormSubmissionsResponseObject); ok {
if err := validResponse.VisitListFormSubmissionsResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// SubmitForm operation middleware
func (sh *strictHandler) SubmitForm(ctx *gin.Context, formId FormId) {
var request SubmitFormRequestObject
request.FormId = formId
var body SubmitFormJSONRequestBody
if err := ctx.ShouldBindJSON(&body); err != nil {
ctx.Status(http.StatusBadRequest)
ctx.Error(err)
return
}
request.Body = &body
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.SubmitForm(ctx, request.(SubmitFormRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "SubmitForm")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(SubmitFormResponseObject); ok {
if err := validResponse.VisitSubmitFormResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// CreateFormVersion operation middleware
func (sh *strictHandler) CreateFormVersion(ctx *gin.Context, formId FormId) {
var request CreateFormVersionRequestObject
request.FormId = formId
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.CreateFormVersion(ctx, request.(CreateFormVersionRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "CreateFormVersion")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(CreateFormVersionResponseObject); ok {
if err := validResponse.VisitCreateFormVersionResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// GetHealth operation middleware
func (sh *strictHandler) GetHealth(ctx *gin.Context) {
var request GetHealthRequestObject
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.GetHealth(ctx, request.(GetHealthRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetHealth")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(GetHealthResponseObject); ok {
if err := validResponse.VisitGetHealthResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// GetSubmission operation middleware
func (sh *strictHandler) GetSubmission(ctx *gin.Context, submissionId openapi_types.UUID) {
var request GetSubmissionRequestObject
request.SubmissionId = submissionId
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.GetSubmission(ctx, request.(GetSubmissionRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetSubmission")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(GetSubmissionResponseObject); ok {
if err := validResponse.VisitGetSubmissionResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// GetSubmissionOfflinePdf operation middleware
func (sh *strictHandler) GetSubmissionOfflinePdf(ctx *gin.Context, submissionId openapi_types.UUID) {
var request GetSubmissionOfflinePdfRequestObject
request.SubmissionId = submissionId
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.GetSubmissionOfflinePdf(ctx, request.(GetSubmissionOfflinePdfRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetSubmissionOfflinePdf")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(GetSubmissionOfflinePdfResponseObject); ok {
if err := validResponse.VisitGetSubmissionOfflinePdfResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
}
// GetSwagger returns the content of the embedded swagger specification file
// or error if failed to decode
func decodeSpec() ([]byte, error) {
zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
if err != nil {
return nil, fmt.Errorf("error base64 decoding spec: %w", err)
}
zr, err := gzip.NewReader(bytes.NewReader(zipped))
if err != nil {
return nil, fmt.Errorf("error decompressing spec: %w", err)
}
var buf bytes.Buffer
_, err = buf.ReadFrom(zr)
if err != nil {
return nil, fmt.Errorf("error decompressing spec: %w", err)
}
return buf.Bytes(), nil
}
var rawSpec = decodeSpecCached()
// a naive cached of a decoded swagger spec
func decodeSpecCached() func() ([]byte, error) {
data, err := decodeSpec()
return func() ([]byte, error) {
return data, err
}
}
// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
res := make(map[string]func() ([]byte, error))
if len(pathToFile) > 0 {
res[pathToFile] = rawSpec
}
return res
}
// GetSwagger returns the Swagger specification corresponding to the generated code
// in this file. The external references of Swagger specification are resolved.
// The logic of resolving external references is tightly connected to "import-mapping" feature.
// Externally referenced files must be embedded in the corresponding golang packages.
// Urls can be supported but this task was out of the scope.
func GetSwagger() (swagger *openapi3.T, err error) {
resolvePath := PathToRawSpec("")
loader := openapi3.NewLoader()
loader.IsExternalRefsAllowed = true
loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
pathToFile := url.String()
pathToFile = path.Clean(pathToFile)
getSpec, ok := resolvePath[pathToFile]
if !ok {
err1 := fmt.Errorf("path not found: %s", pathToFile)
return nil, err1
}
return getSpec()
}
var specData []byte
specData, err = rawSpec()
if err != nil {
return
}
swagger, err = loader.LoadFromData(specData)
if err != nil {
return
}
return
}