2051 lines
63 KiB
Go
2051 lines
63 KiB
Go
//go:build go1.22
|
|
|
|
// Package v1 provides primitives to interact with the openapi HTTP API.
|
|
//
|
|
// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.6.0 DO NOT EDIT.
|
|
package v1
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"mime/multipart"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/oapi-codegen/runtime"
|
|
strictnethttp "github.com/oapi-codegen/runtime/strictmiddleware/nethttp"
|
|
openapi_types "github.com/oapi-codegen/runtime/types"
|
|
)
|
|
|
|
const (
|
|
BearerAuthScopes = "BearerAuth.Scopes"
|
|
)
|
|
|
|
// Defines values for GetSearchParamsSource.
|
|
const (
|
|
AnnasArchive GetSearchParamsSource = "Annas Archive"
|
|
LibGen GetSearchParamsSource = "LibGen"
|
|
)
|
|
|
|
// Valid indicates whether the value is a known member of the GetSearchParamsSource enum.
|
|
func (e GetSearchParamsSource) Valid() bool {
|
|
switch e {
|
|
case AnnasArchive:
|
|
return true
|
|
case LibGen:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
// Activity defines model for Activity.
|
|
type Activity struct {
|
|
ActivityType string `json:"activity_type"`
|
|
DocumentId string `json:"document_id"`
|
|
Id string `json:"id"`
|
|
Timestamp time.Time `json:"timestamp"`
|
|
UserId string `json:"user_id"`
|
|
}
|
|
|
|
// ActivityResponse defines model for ActivityResponse.
|
|
type ActivityResponse struct {
|
|
Activities []Activity `json:"activities"`
|
|
User UserData `json:"user"`
|
|
}
|
|
|
|
// DatabaseInfo defines model for DatabaseInfo.
|
|
type DatabaseInfo struct {
|
|
ActivitySize int64 `json:"activity_size"`
|
|
DevicesSize int64 `json:"devices_size"`
|
|
DocumentsSize int64 `json:"documents_size"`
|
|
ProgressSize int64 `json:"progress_size"`
|
|
}
|
|
|
|
// Device defines model for Device.
|
|
type Device struct {
|
|
CreatedAt *time.Time `json:"created_at,omitempty"`
|
|
DeviceName *string `json:"device_name,omitempty"`
|
|
Id *string `json:"id,omitempty"`
|
|
LastSynced *time.Time `json:"last_synced,omitempty"`
|
|
}
|
|
|
|
// Document defines model for Document.
|
|
type Document struct {
|
|
Author string `json:"author"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
Deleted bool `json:"deleted"`
|
|
Filepath *string `json:"filepath,omitempty"`
|
|
Id string `json:"id"`
|
|
Percentage *float32 `json:"percentage,omitempty"`
|
|
Title string `json:"title"`
|
|
TotalTimeSeconds *int64 `json:"total_time_seconds,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
Words *int64 `json:"words,omitempty"`
|
|
}
|
|
|
|
// DocumentResponse defines model for DocumentResponse.
|
|
type DocumentResponse struct {
|
|
Document Document `json:"document"`
|
|
Progress *Progress `json:"progress,omitempty"`
|
|
User UserData `json:"user"`
|
|
}
|
|
|
|
// DocumentsResponse defines model for DocumentsResponse.
|
|
type DocumentsResponse struct {
|
|
Documents []Document `json:"documents"`
|
|
Limit int64 `json:"limit"`
|
|
NextPage *int64 `json:"next_page,omitempty"`
|
|
Page int64 `json:"page"`
|
|
PreviousPage *int64 `json:"previous_page,omitempty"`
|
|
Search *string `json:"search,omitempty"`
|
|
Total int64 `json:"total"`
|
|
User UserData `json:"user"`
|
|
WordCounts []WordCount `json:"word_counts"`
|
|
}
|
|
|
|
// ErrorResponse defines model for ErrorResponse.
|
|
type ErrorResponse struct {
|
|
Code int `json:"code"`
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
// GraphDataPoint defines model for GraphDataPoint.
|
|
type GraphDataPoint struct {
|
|
Date string `json:"date"`
|
|
MinutesRead int64 `json:"minutes_read"`
|
|
}
|
|
|
|
// GraphDataResponse defines model for GraphDataResponse.
|
|
type GraphDataResponse struct {
|
|
GraphData []GraphDataPoint `json:"graph_data"`
|
|
User UserData `json:"user"`
|
|
}
|
|
|
|
// HomeResponse defines model for HomeResponse.
|
|
type HomeResponse struct {
|
|
DatabaseInfo DatabaseInfo `json:"database_info"`
|
|
GraphData GraphDataResponse `json:"graph_data"`
|
|
Streaks StreaksResponse `json:"streaks"`
|
|
User UserData `json:"user"`
|
|
UserStatistics UserStatisticsResponse `json:"user_statistics"`
|
|
}
|
|
|
|
// LeaderboardData defines model for LeaderboardData.
|
|
type LeaderboardData struct {
|
|
All []LeaderboardEntry `json:"all"`
|
|
Month []LeaderboardEntry `json:"month"`
|
|
Week []LeaderboardEntry `json:"week"`
|
|
Year []LeaderboardEntry `json:"year"`
|
|
}
|
|
|
|
// LeaderboardEntry defines model for LeaderboardEntry.
|
|
type LeaderboardEntry struct {
|
|
UserId string `json:"user_id"`
|
|
Value int64 `json:"value"`
|
|
}
|
|
|
|
// LoginRequest defines model for LoginRequest.
|
|
type LoginRequest struct {
|
|
Password string `json:"password"`
|
|
Username string `json:"username"`
|
|
}
|
|
|
|
// LoginResponse defines model for LoginResponse.
|
|
type LoginResponse struct {
|
|
IsAdmin bool `json:"is_admin"`
|
|
Username string `json:"username"`
|
|
}
|
|
|
|
// Progress defines model for Progress.
|
|
type Progress struct {
|
|
Author *string `json:"author,omitempty"`
|
|
CreatedAt *time.Time `json:"created_at,omitempty"`
|
|
DeviceName *string `json:"device_name,omitempty"`
|
|
DocumentId *string `json:"document_id,omitempty"`
|
|
Percentage *float64 `json:"percentage,omitempty"`
|
|
Title *string `json:"title,omitempty"`
|
|
UserId *string `json:"user_id,omitempty"`
|
|
}
|
|
|
|
// ProgressListResponse defines model for ProgressListResponse.
|
|
type ProgressListResponse struct {
|
|
Limit *int64 `json:"limit,omitempty"`
|
|
NextPage *int64 `json:"next_page,omitempty"`
|
|
Page *int64 `json:"page,omitempty"`
|
|
PreviousPage *int64 `json:"previous_page,omitempty"`
|
|
Progress *[]Progress `json:"progress,omitempty"`
|
|
Total *int64 `json:"total,omitempty"`
|
|
User *UserData `json:"user,omitempty"`
|
|
}
|
|
|
|
// ProgressResponse defines model for ProgressResponse.
|
|
type ProgressResponse struct {
|
|
Progress *Progress `json:"progress,omitempty"`
|
|
User *UserData `json:"user,omitempty"`
|
|
}
|
|
|
|
// SearchItem defines model for SearchItem.
|
|
type SearchItem struct {
|
|
Author *string `json:"author,omitempty"`
|
|
FileSize *string `json:"file_size,omitempty"`
|
|
FileType *string `json:"file_type,omitempty"`
|
|
Id *string `json:"id,omitempty"`
|
|
Language *string `json:"language,omitempty"`
|
|
Series *string `json:"series,omitempty"`
|
|
Title *string `json:"title,omitempty"`
|
|
UploadDate *string `json:"upload_date,omitempty"`
|
|
}
|
|
|
|
// SearchResponse defines model for SearchResponse.
|
|
type SearchResponse struct {
|
|
Query string `json:"query"`
|
|
Results []SearchItem `json:"results"`
|
|
Source string `json:"source"`
|
|
}
|
|
|
|
// SettingsResponse defines model for SettingsResponse.
|
|
type SettingsResponse struct {
|
|
Devices *[]Device `json:"devices,omitempty"`
|
|
Timezone *string `json:"timezone,omitempty"`
|
|
User UserData `json:"user"`
|
|
}
|
|
|
|
// StreaksResponse defines model for StreaksResponse.
|
|
type StreaksResponse struct {
|
|
Streaks []UserStreak `json:"streaks"`
|
|
User UserData `json:"user"`
|
|
}
|
|
|
|
// UserData defines model for UserData.
|
|
type UserData struct {
|
|
IsAdmin bool `json:"is_admin"`
|
|
Username string `json:"username"`
|
|
}
|
|
|
|
// UserStatisticsResponse defines model for UserStatisticsResponse.
|
|
type UserStatisticsResponse struct {
|
|
Duration LeaderboardData `json:"duration"`
|
|
User UserData `json:"user"`
|
|
Words LeaderboardData `json:"words"`
|
|
Wpm LeaderboardData `json:"wpm"`
|
|
}
|
|
|
|
// UserStreak defines model for UserStreak.
|
|
type UserStreak struct {
|
|
CurrentStreak int64 `json:"current_streak"`
|
|
CurrentStreakEndDate string `json:"current_streak_end_date"`
|
|
CurrentStreakStartDate string `json:"current_streak_start_date"`
|
|
MaxStreak int64 `json:"max_streak"`
|
|
MaxStreakEndDate string `json:"max_streak_end_date"`
|
|
MaxStreakStartDate string `json:"max_streak_start_date"`
|
|
Window string `json:"window"`
|
|
}
|
|
|
|
// WordCount defines model for WordCount.
|
|
type WordCount struct {
|
|
Count int64 `json:"count"`
|
|
DocumentId string `json:"document_id"`
|
|
}
|
|
|
|
// GetActivityParams defines parameters for GetActivity.
|
|
type GetActivityParams struct {
|
|
DocFilter *bool `form:"doc_filter,omitempty" json:"doc_filter,omitempty"`
|
|
DocumentId *string `form:"document_id,omitempty" json:"document_id,omitempty"`
|
|
Offset *int64 `form:"offset,omitempty" json:"offset,omitempty"`
|
|
Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"`
|
|
}
|
|
|
|
// GetDocumentsParams defines parameters for GetDocuments.
|
|
type GetDocumentsParams struct {
|
|
Page *int64 `form:"page,omitempty" json:"page,omitempty"`
|
|
Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"`
|
|
Search *string `form:"search,omitempty" json:"search,omitempty"`
|
|
}
|
|
|
|
// CreateDocumentMultipartBody defines parameters for CreateDocument.
|
|
type CreateDocumentMultipartBody struct {
|
|
DocumentFile openapi_types.File `json:"document_file"`
|
|
}
|
|
|
|
// GetProgressListParams defines parameters for GetProgressList.
|
|
type GetProgressListParams struct {
|
|
Page *int64 `form:"page,omitempty" json:"page,omitempty"`
|
|
Limit *int64 `form:"limit,omitempty" json:"limit,omitempty"`
|
|
Document *string `form:"document,omitempty" json:"document,omitempty"`
|
|
}
|
|
|
|
// GetSearchParams defines parameters for GetSearch.
|
|
type GetSearchParams struct {
|
|
Query string `form:"query" json:"query"`
|
|
Source GetSearchParamsSource `form:"source" json:"source"`
|
|
}
|
|
|
|
// GetSearchParamsSource defines parameters for GetSearch.
|
|
type GetSearchParamsSource string
|
|
|
|
// PostSearchFormdataBody defines parameters for PostSearch.
|
|
type PostSearchFormdataBody struct {
|
|
Author string `form:"author" json:"author"`
|
|
Id string `form:"id" json:"id"`
|
|
Source string `form:"source" json:"source"`
|
|
Title string `form:"title" json:"title"`
|
|
}
|
|
|
|
// LoginJSONRequestBody defines body for Login for application/json ContentType.
|
|
type LoginJSONRequestBody = LoginRequest
|
|
|
|
// CreateDocumentMultipartRequestBody defines body for CreateDocument for multipart/form-data ContentType.
|
|
type CreateDocumentMultipartRequestBody CreateDocumentMultipartBody
|
|
|
|
// PostSearchFormdataRequestBody defines body for PostSearch for application/x-www-form-urlencoded ContentType.
|
|
type PostSearchFormdataRequestBody PostSearchFormdataBody
|
|
|
|
// ServerInterface represents all server handlers.
|
|
type ServerInterface interface {
|
|
// Get activity data
|
|
// (GET /activity)
|
|
GetActivity(w http.ResponseWriter, r *http.Request, params GetActivityParams)
|
|
// User login
|
|
// (POST /auth/login)
|
|
Login(w http.ResponseWriter, r *http.Request)
|
|
// User logout
|
|
// (POST /auth/logout)
|
|
Logout(w http.ResponseWriter, r *http.Request)
|
|
// Get current user info
|
|
// (GET /auth/me)
|
|
GetMe(w http.ResponseWriter, r *http.Request)
|
|
// List documents
|
|
// (GET /documents)
|
|
GetDocuments(w http.ResponseWriter, r *http.Request, params GetDocumentsParams)
|
|
// Upload a new document
|
|
// (POST /documents)
|
|
CreateDocument(w http.ResponseWriter, r *http.Request)
|
|
// Get a single document
|
|
// (GET /documents/{id})
|
|
GetDocument(w http.ResponseWriter, r *http.Request, id string)
|
|
// Get home page data
|
|
// (GET /home)
|
|
GetHome(w http.ResponseWriter, r *http.Request)
|
|
// Get daily read stats graph data
|
|
// (GET /home/graph)
|
|
GetGraphData(w http.ResponseWriter, r *http.Request)
|
|
// Get user statistics (leaderboards)
|
|
// (GET /home/statistics)
|
|
GetUserStatistics(w http.ResponseWriter, r *http.Request)
|
|
// Get user streaks
|
|
// (GET /home/streaks)
|
|
GetStreaks(w http.ResponseWriter, r *http.Request)
|
|
// List progress records
|
|
// (GET /progress)
|
|
GetProgressList(w http.ResponseWriter, r *http.Request, params GetProgressListParams)
|
|
// Get document progress
|
|
// (GET /progress/{id})
|
|
GetProgress(w http.ResponseWriter, r *http.Request, id string)
|
|
// Search external book sources
|
|
// (GET /search)
|
|
GetSearch(w http.ResponseWriter, r *http.Request, params GetSearchParams)
|
|
// Download search result
|
|
// (POST /search)
|
|
PostSearch(w http.ResponseWriter, r *http.Request)
|
|
// Get user settings
|
|
// (GET /settings)
|
|
GetSettings(w http.ResponseWriter, r *http.Request)
|
|
}
|
|
|
|
// ServerInterfaceWrapper converts contexts to parameters.
|
|
type ServerInterfaceWrapper struct {
|
|
Handler ServerInterface
|
|
HandlerMiddlewares []MiddlewareFunc
|
|
ErrorHandlerFunc func(w http.ResponseWriter, r *http.Request, err error)
|
|
}
|
|
|
|
type MiddlewareFunc func(http.Handler) http.Handler
|
|
|
|
// GetActivity operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetActivity(w http.ResponseWriter, r *http.Request) {
|
|
|
|
var err error
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
// Parameter object where we will unmarshal all parameters from the context
|
|
var params GetActivityParams
|
|
|
|
// ------------- Optional query parameter "doc_filter" -------------
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, false, "doc_filter", r.URL.Query(), ¶ms.DocFilter, runtime.BindQueryParameterOptions{Type: "boolean", Format: ""})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "doc_filter", Err: err})
|
|
return
|
|
}
|
|
|
|
// ------------- Optional query parameter "document_id" -------------
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, false, "document_id", r.URL.Query(), ¶ms.DocumentId, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "document_id", Err: err})
|
|
return
|
|
}
|
|
|
|
// ------------- Optional query parameter "offset" -------------
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, false, "offset", r.URL.Query(), ¶ms.Offset, runtime.BindQueryParameterOptions{Type: "integer", Format: "int64"})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "offset", Err: err})
|
|
return
|
|
}
|
|
|
|
// ------------- Optional query parameter "limit" -------------
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, false, "limit", r.URL.Query(), ¶ms.Limit, runtime.BindQueryParameterOptions{Type: "integer", Format: "int64"})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "limit", Err: err})
|
|
return
|
|
}
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetActivity(w, r, params)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// Login operation middleware
|
|
func (siw *ServerInterfaceWrapper) Login(w http.ResponseWriter, r *http.Request) {
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.Login(w, r)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// Logout operation middleware
|
|
func (siw *ServerInterfaceWrapper) Logout(w http.ResponseWriter, r *http.Request) {
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.Logout(w, r)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// GetMe operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetMe(w http.ResponseWriter, r *http.Request) {
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetMe(w, r)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// GetDocuments operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetDocuments(w http.ResponseWriter, r *http.Request) {
|
|
|
|
var err error
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
// Parameter object where we will unmarshal all parameters from the context
|
|
var params GetDocumentsParams
|
|
|
|
// ------------- Optional query parameter "page" -------------
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, false, "page", r.URL.Query(), ¶ms.Page, runtime.BindQueryParameterOptions{Type: "integer", Format: "int64"})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "page", Err: err})
|
|
return
|
|
}
|
|
|
|
// ------------- Optional query parameter "limit" -------------
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, false, "limit", r.URL.Query(), ¶ms.Limit, runtime.BindQueryParameterOptions{Type: "integer", Format: "int64"})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "limit", Err: err})
|
|
return
|
|
}
|
|
|
|
// ------------- Optional query parameter "search" -------------
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, false, "search", r.URL.Query(), ¶ms.Search, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "search", Err: err})
|
|
return
|
|
}
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetDocuments(w, r, params)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// CreateDocument operation middleware
|
|
func (siw *ServerInterfaceWrapper) CreateDocument(w http.ResponseWriter, r *http.Request) {
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.CreateDocument(w, r)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// GetDocument operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetDocument(w http.ResponseWriter, r *http.Request) {
|
|
|
|
var err error
|
|
|
|
// ------------- Path parameter "id" -------------
|
|
var id string
|
|
|
|
err = runtime.BindStyledParameterWithOptions("simple", "id", r.PathValue("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "id", Err: err})
|
|
return
|
|
}
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetDocument(w, r, id)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// GetHome operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetHome(w http.ResponseWriter, r *http.Request) {
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetHome(w, r)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// GetGraphData operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetGraphData(w http.ResponseWriter, r *http.Request) {
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetGraphData(w, r)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// GetUserStatistics operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetUserStatistics(w http.ResponseWriter, r *http.Request) {
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetUserStatistics(w, r)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// GetStreaks operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetStreaks(w http.ResponseWriter, r *http.Request) {
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetStreaks(w, r)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// GetProgressList operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetProgressList(w http.ResponseWriter, r *http.Request) {
|
|
|
|
var err error
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
// Parameter object where we will unmarshal all parameters from the context
|
|
var params GetProgressListParams
|
|
|
|
// ------------- Optional query parameter "page" -------------
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, false, "page", r.URL.Query(), ¶ms.Page, runtime.BindQueryParameterOptions{Type: "integer", Format: "int64"})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "page", Err: err})
|
|
return
|
|
}
|
|
|
|
// ------------- Optional query parameter "limit" -------------
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, false, "limit", r.URL.Query(), ¶ms.Limit, runtime.BindQueryParameterOptions{Type: "integer", Format: "int64"})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "limit", Err: err})
|
|
return
|
|
}
|
|
|
|
// ------------- Optional query parameter "document" -------------
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, false, "document", r.URL.Query(), ¶ms.Document, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "document", Err: err})
|
|
return
|
|
}
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetProgressList(w, r, params)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// GetProgress operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetProgress(w http.ResponseWriter, r *http.Request) {
|
|
|
|
var err error
|
|
|
|
// ------------- Path parameter "id" -------------
|
|
var id string
|
|
|
|
err = runtime.BindStyledParameterWithOptions("simple", "id", r.PathValue("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "id", Err: err})
|
|
return
|
|
}
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetProgress(w, r, id)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// GetSearch operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetSearch(w http.ResponseWriter, r *http.Request) {
|
|
|
|
var err error
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
// Parameter object where we will unmarshal all parameters from the context
|
|
var params GetSearchParams
|
|
|
|
// ------------- Required query parameter "query" -------------
|
|
|
|
if paramValue := r.URL.Query().Get("query"); paramValue != "" {
|
|
|
|
} else {
|
|
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "query"})
|
|
return
|
|
}
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, true, "query", r.URL.Query(), ¶ms.Query, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "query", Err: err})
|
|
return
|
|
}
|
|
|
|
// ------------- Required query parameter "source" -------------
|
|
|
|
if paramValue := r.URL.Query().Get("source"); paramValue != "" {
|
|
|
|
} else {
|
|
siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "source"})
|
|
return
|
|
}
|
|
|
|
err = runtime.BindQueryParameterWithOptions("form", true, true, "source", r.URL.Query(), ¶ms.Source, runtime.BindQueryParameterOptions{Type: "string", Format: ""})
|
|
if err != nil {
|
|
siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "source", Err: err})
|
|
return
|
|
}
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetSearch(w, r, params)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// PostSearch operation middleware
|
|
func (siw *ServerInterfaceWrapper) PostSearch(w http.ResponseWriter, r *http.Request) {
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.PostSearch(w, r)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
// GetSettings operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetSettings(w http.ResponseWriter, r *http.Request) {
|
|
|
|
ctx := r.Context()
|
|
|
|
ctx = context.WithValue(ctx, BearerAuthScopes, []string{})
|
|
|
|
r = r.WithContext(ctx)
|
|
|
|
handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
siw.Handler.GetSettings(w, r)
|
|
}))
|
|
|
|
for _, middleware := range siw.HandlerMiddlewares {
|
|
handler = middleware(handler)
|
|
}
|
|
|
|
handler.ServeHTTP(w, r)
|
|
}
|
|
|
|
type UnescapedCookieParamError struct {
|
|
ParamName string
|
|
Err error
|
|
}
|
|
|
|
func (e *UnescapedCookieParamError) Error() string {
|
|
return fmt.Sprintf("error unescaping cookie parameter '%s'", e.ParamName)
|
|
}
|
|
|
|
func (e *UnescapedCookieParamError) Unwrap() error {
|
|
return e.Err
|
|
}
|
|
|
|
type UnmarshalingParamError struct {
|
|
ParamName string
|
|
Err error
|
|
}
|
|
|
|
func (e *UnmarshalingParamError) Error() string {
|
|
return fmt.Sprintf("Error unmarshaling parameter %s as JSON: %s", e.ParamName, e.Err.Error())
|
|
}
|
|
|
|
func (e *UnmarshalingParamError) Unwrap() error {
|
|
return e.Err
|
|
}
|
|
|
|
type RequiredParamError struct {
|
|
ParamName string
|
|
}
|
|
|
|
func (e *RequiredParamError) Error() string {
|
|
return fmt.Sprintf("Query argument %s is required, but not found", e.ParamName)
|
|
}
|
|
|
|
type RequiredHeaderError struct {
|
|
ParamName string
|
|
Err error
|
|
}
|
|
|
|
func (e *RequiredHeaderError) Error() string {
|
|
return fmt.Sprintf("Header parameter %s is required, but not found", e.ParamName)
|
|
}
|
|
|
|
func (e *RequiredHeaderError) Unwrap() error {
|
|
return e.Err
|
|
}
|
|
|
|
type InvalidParamFormatError struct {
|
|
ParamName string
|
|
Err error
|
|
}
|
|
|
|
func (e *InvalidParamFormatError) Error() string {
|
|
return fmt.Sprintf("Invalid format for parameter %s: %s", e.ParamName, e.Err.Error())
|
|
}
|
|
|
|
func (e *InvalidParamFormatError) Unwrap() error {
|
|
return e.Err
|
|
}
|
|
|
|
type TooManyValuesForParamError struct {
|
|
ParamName string
|
|
Count int
|
|
}
|
|
|
|
func (e *TooManyValuesForParamError) Error() string {
|
|
return fmt.Sprintf("Expected one value for %s, got %d", e.ParamName, e.Count)
|
|
}
|
|
|
|
// Handler creates http.Handler with routing matching OpenAPI spec.
|
|
func Handler(si ServerInterface) http.Handler {
|
|
return HandlerWithOptions(si, StdHTTPServerOptions{})
|
|
}
|
|
|
|
// ServeMux is an abstraction of http.ServeMux.
|
|
type ServeMux interface {
|
|
HandleFunc(pattern string, handler func(http.ResponseWriter, *http.Request))
|
|
ServeHTTP(w http.ResponseWriter, r *http.Request)
|
|
}
|
|
|
|
type StdHTTPServerOptions struct {
|
|
BaseURL string
|
|
BaseRouter ServeMux
|
|
Middlewares []MiddlewareFunc
|
|
ErrorHandlerFunc func(w http.ResponseWriter, r *http.Request, err error)
|
|
}
|
|
|
|
// HandlerFromMux creates http.Handler with routing matching OpenAPI spec based on the provided mux.
|
|
func HandlerFromMux(si ServerInterface, m ServeMux) http.Handler {
|
|
return HandlerWithOptions(si, StdHTTPServerOptions{
|
|
BaseRouter: m,
|
|
})
|
|
}
|
|
|
|
func HandlerFromMuxWithBaseURL(si ServerInterface, m ServeMux, baseURL string) http.Handler {
|
|
return HandlerWithOptions(si, StdHTTPServerOptions{
|
|
BaseURL: baseURL,
|
|
BaseRouter: m,
|
|
})
|
|
}
|
|
|
|
// HandlerWithOptions creates http.Handler with additional options
|
|
func HandlerWithOptions(si ServerInterface, options StdHTTPServerOptions) http.Handler {
|
|
m := options.BaseRouter
|
|
|
|
if m == nil {
|
|
m = http.NewServeMux()
|
|
}
|
|
if options.ErrorHandlerFunc == nil {
|
|
options.ErrorHandlerFunc = func(w http.ResponseWriter, r *http.Request, err error) {
|
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
|
}
|
|
}
|
|
|
|
wrapper := ServerInterfaceWrapper{
|
|
Handler: si,
|
|
HandlerMiddlewares: options.Middlewares,
|
|
ErrorHandlerFunc: options.ErrorHandlerFunc,
|
|
}
|
|
|
|
m.HandleFunc("GET "+options.BaseURL+"/activity", wrapper.GetActivity)
|
|
m.HandleFunc("POST "+options.BaseURL+"/auth/login", wrapper.Login)
|
|
m.HandleFunc("POST "+options.BaseURL+"/auth/logout", wrapper.Logout)
|
|
m.HandleFunc("GET "+options.BaseURL+"/auth/me", wrapper.GetMe)
|
|
m.HandleFunc("GET "+options.BaseURL+"/documents", wrapper.GetDocuments)
|
|
m.HandleFunc("POST "+options.BaseURL+"/documents", wrapper.CreateDocument)
|
|
m.HandleFunc("GET "+options.BaseURL+"/documents/{id}", wrapper.GetDocument)
|
|
m.HandleFunc("GET "+options.BaseURL+"/home", wrapper.GetHome)
|
|
m.HandleFunc("GET "+options.BaseURL+"/home/graph", wrapper.GetGraphData)
|
|
m.HandleFunc("GET "+options.BaseURL+"/home/statistics", wrapper.GetUserStatistics)
|
|
m.HandleFunc("GET "+options.BaseURL+"/home/streaks", wrapper.GetStreaks)
|
|
m.HandleFunc("GET "+options.BaseURL+"/progress", wrapper.GetProgressList)
|
|
m.HandleFunc("GET "+options.BaseURL+"/progress/{id}", wrapper.GetProgress)
|
|
m.HandleFunc("GET "+options.BaseURL+"/search", wrapper.GetSearch)
|
|
m.HandleFunc("POST "+options.BaseURL+"/search", wrapper.PostSearch)
|
|
m.HandleFunc("GET "+options.BaseURL+"/settings", wrapper.GetSettings)
|
|
|
|
return m
|
|
}
|
|
|
|
type GetActivityRequestObject struct {
|
|
Params GetActivityParams
|
|
}
|
|
|
|
type GetActivityResponseObject interface {
|
|
VisitGetActivityResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetActivity200JSONResponse ActivityResponse
|
|
|
|
func (response GetActivity200JSONResponse) VisitGetActivityResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetActivity401JSONResponse ErrorResponse
|
|
|
|
func (response GetActivity401JSONResponse) VisitGetActivityResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetActivity500JSONResponse ErrorResponse
|
|
|
|
func (response GetActivity500JSONResponse) VisitGetActivityResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type LoginRequestObject struct {
|
|
Body *LoginJSONRequestBody
|
|
}
|
|
|
|
type LoginResponseObject interface {
|
|
VisitLoginResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type Login200JSONResponse LoginResponse
|
|
|
|
func (response Login200JSONResponse) VisitLoginResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type Login400JSONResponse ErrorResponse
|
|
|
|
func (response Login400JSONResponse) VisitLoginResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(400)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type Login401JSONResponse ErrorResponse
|
|
|
|
func (response Login401JSONResponse) VisitLoginResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type Login500JSONResponse ErrorResponse
|
|
|
|
func (response Login500JSONResponse) VisitLoginResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type LogoutRequestObject struct {
|
|
}
|
|
|
|
type LogoutResponseObject interface {
|
|
VisitLogoutResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type Logout200Response struct {
|
|
}
|
|
|
|
func (response Logout200Response) VisitLogoutResponse(w http.ResponseWriter) error {
|
|
w.WriteHeader(200)
|
|
return nil
|
|
}
|
|
|
|
type Logout401JSONResponse ErrorResponse
|
|
|
|
func (response Logout401JSONResponse) VisitLogoutResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetMeRequestObject struct {
|
|
}
|
|
|
|
type GetMeResponseObject interface {
|
|
VisitGetMeResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetMe200JSONResponse LoginResponse
|
|
|
|
func (response GetMe200JSONResponse) VisitGetMeResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetMe401JSONResponse ErrorResponse
|
|
|
|
func (response GetMe401JSONResponse) VisitGetMeResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetDocumentsRequestObject struct {
|
|
Params GetDocumentsParams
|
|
}
|
|
|
|
type GetDocumentsResponseObject interface {
|
|
VisitGetDocumentsResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetDocuments200JSONResponse DocumentsResponse
|
|
|
|
func (response GetDocuments200JSONResponse) VisitGetDocumentsResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetDocuments401JSONResponse ErrorResponse
|
|
|
|
func (response GetDocuments401JSONResponse) VisitGetDocumentsResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetDocuments500JSONResponse ErrorResponse
|
|
|
|
func (response GetDocuments500JSONResponse) VisitGetDocumentsResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type CreateDocumentRequestObject struct {
|
|
Body *multipart.Reader
|
|
}
|
|
|
|
type CreateDocumentResponseObject interface {
|
|
VisitCreateDocumentResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type CreateDocument200JSONResponse DocumentResponse
|
|
|
|
func (response CreateDocument200JSONResponse) VisitCreateDocumentResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type CreateDocument400JSONResponse ErrorResponse
|
|
|
|
func (response CreateDocument400JSONResponse) VisitCreateDocumentResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(400)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type CreateDocument401JSONResponse ErrorResponse
|
|
|
|
func (response CreateDocument401JSONResponse) VisitCreateDocumentResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type CreateDocument500JSONResponse ErrorResponse
|
|
|
|
func (response CreateDocument500JSONResponse) VisitCreateDocumentResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetDocumentRequestObject struct {
|
|
Id string `json:"id"`
|
|
}
|
|
|
|
type GetDocumentResponseObject interface {
|
|
VisitGetDocumentResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetDocument200JSONResponse DocumentResponse
|
|
|
|
func (response GetDocument200JSONResponse) VisitGetDocumentResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetDocument401JSONResponse ErrorResponse
|
|
|
|
func (response GetDocument401JSONResponse) VisitGetDocumentResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetDocument404JSONResponse ErrorResponse
|
|
|
|
func (response GetDocument404JSONResponse) VisitGetDocumentResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(404)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetDocument500JSONResponse ErrorResponse
|
|
|
|
func (response GetDocument500JSONResponse) VisitGetDocumentResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetHomeRequestObject struct {
|
|
}
|
|
|
|
type GetHomeResponseObject interface {
|
|
VisitGetHomeResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetHome200JSONResponse HomeResponse
|
|
|
|
func (response GetHome200JSONResponse) VisitGetHomeResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetHome401JSONResponse ErrorResponse
|
|
|
|
func (response GetHome401JSONResponse) VisitGetHomeResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetHome500JSONResponse ErrorResponse
|
|
|
|
func (response GetHome500JSONResponse) VisitGetHomeResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetGraphDataRequestObject struct {
|
|
}
|
|
|
|
type GetGraphDataResponseObject interface {
|
|
VisitGetGraphDataResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetGraphData200JSONResponse GraphDataResponse
|
|
|
|
func (response GetGraphData200JSONResponse) VisitGetGraphDataResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetGraphData401JSONResponse ErrorResponse
|
|
|
|
func (response GetGraphData401JSONResponse) VisitGetGraphDataResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetGraphData500JSONResponse ErrorResponse
|
|
|
|
func (response GetGraphData500JSONResponse) VisitGetGraphDataResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetUserStatisticsRequestObject struct {
|
|
}
|
|
|
|
type GetUserStatisticsResponseObject interface {
|
|
VisitGetUserStatisticsResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetUserStatistics200JSONResponse UserStatisticsResponse
|
|
|
|
func (response GetUserStatistics200JSONResponse) VisitGetUserStatisticsResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetUserStatistics401JSONResponse ErrorResponse
|
|
|
|
func (response GetUserStatistics401JSONResponse) VisitGetUserStatisticsResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetUserStatistics500JSONResponse ErrorResponse
|
|
|
|
func (response GetUserStatistics500JSONResponse) VisitGetUserStatisticsResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetStreaksRequestObject struct {
|
|
}
|
|
|
|
type GetStreaksResponseObject interface {
|
|
VisitGetStreaksResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetStreaks200JSONResponse StreaksResponse
|
|
|
|
func (response GetStreaks200JSONResponse) VisitGetStreaksResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetStreaks401JSONResponse ErrorResponse
|
|
|
|
func (response GetStreaks401JSONResponse) VisitGetStreaksResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetStreaks500JSONResponse ErrorResponse
|
|
|
|
func (response GetStreaks500JSONResponse) VisitGetStreaksResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetProgressListRequestObject struct {
|
|
Params GetProgressListParams
|
|
}
|
|
|
|
type GetProgressListResponseObject interface {
|
|
VisitGetProgressListResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetProgressList200JSONResponse ProgressListResponse
|
|
|
|
func (response GetProgressList200JSONResponse) VisitGetProgressListResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetProgressList401JSONResponse ErrorResponse
|
|
|
|
func (response GetProgressList401JSONResponse) VisitGetProgressListResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetProgressList500JSONResponse ErrorResponse
|
|
|
|
func (response GetProgressList500JSONResponse) VisitGetProgressListResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetProgressRequestObject struct {
|
|
Id string `json:"id"`
|
|
}
|
|
|
|
type GetProgressResponseObject interface {
|
|
VisitGetProgressResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetProgress200JSONResponse ProgressResponse
|
|
|
|
func (response GetProgress200JSONResponse) VisitGetProgressResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetProgress401JSONResponse ErrorResponse
|
|
|
|
func (response GetProgress401JSONResponse) VisitGetProgressResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetProgress404JSONResponse ErrorResponse
|
|
|
|
func (response GetProgress404JSONResponse) VisitGetProgressResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(404)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetProgress500JSONResponse ErrorResponse
|
|
|
|
func (response GetProgress500JSONResponse) VisitGetProgressResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetSearchRequestObject struct {
|
|
Params GetSearchParams
|
|
}
|
|
|
|
type GetSearchResponseObject interface {
|
|
VisitGetSearchResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetSearch200JSONResponse SearchResponse
|
|
|
|
func (response GetSearch200JSONResponse) VisitGetSearchResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetSearch400JSONResponse ErrorResponse
|
|
|
|
func (response GetSearch400JSONResponse) VisitGetSearchResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(400)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetSearch401JSONResponse ErrorResponse
|
|
|
|
func (response GetSearch401JSONResponse) VisitGetSearchResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetSearch500JSONResponse ErrorResponse
|
|
|
|
func (response GetSearch500JSONResponse) VisitGetSearchResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type PostSearchRequestObject struct {
|
|
Body *PostSearchFormdataRequestBody
|
|
}
|
|
|
|
type PostSearchResponseObject interface {
|
|
VisitPostSearchResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type PostSearch200Response struct {
|
|
}
|
|
|
|
func (response PostSearch200Response) VisitPostSearchResponse(w http.ResponseWriter) error {
|
|
w.WriteHeader(200)
|
|
return nil
|
|
}
|
|
|
|
type PostSearch401JSONResponse ErrorResponse
|
|
|
|
func (response PostSearch401JSONResponse) VisitPostSearchResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type PostSearch500JSONResponse ErrorResponse
|
|
|
|
func (response PostSearch500JSONResponse) VisitPostSearchResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(500)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetSettingsRequestObject struct {
|
|
}
|
|
|
|
type GetSettingsResponseObject interface {
|
|
VisitGetSettingsResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetSettings200JSONResponse SettingsResponse
|
|
|
|
func (response GetSettings200JSONResponse) VisitGetSettingsResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetSettings401JSONResponse ErrorResponse
|
|
|
|
func (response GetSettings401JSONResponse) VisitGetSettingsResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(401)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetSettings500JSONResponse ErrorResponse
|
|
|
|
func (response GetSettings500JSONResponse) VisitGetSettingsResponse(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 {
|
|
// Get activity data
|
|
// (GET /activity)
|
|
GetActivity(ctx context.Context, request GetActivityRequestObject) (GetActivityResponseObject, error)
|
|
// User login
|
|
// (POST /auth/login)
|
|
Login(ctx context.Context, request LoginRequestObject) (LoginResponseObject, error)
|
|
// User logout
|
|
// (POST /auth/logout)
|
|
Logout(ctx context.Context, request LogoutRequestObject) (LogoutResponseObject, error)
|
|
// Get current user info
|
|
// (GET /auth/me)
|
|
GetMe(ctx context.Context, request GetMeRequestObject) (GetMeResponseObject, error)
|
|
// List documents
|
|
// (GET /documents)
|
|
GetDocuments(ctx context.Context, request GetDocumentsRequestObject) (GetDocumentsResponseObject, error)
|
|
// Upload a new document
|
|
// (POST /documents)
|
|
CreateDocument(ctx context.Context, request CreateDocumentRequestObject) (CreateDocumentResponseObject, error)
|
|
// Get a single document
|
|
// (GET /documents/{id})
|
|
GetDocument(ctx context.Context, request GetDocumentRequestObject) (GetDocumentResponseObject, error)
|
|
// Get home page data
|
|
// (GET /home)
|
|
GetHome(ctx context.Context, request GetHomeRequestObject) (GetHomeResponseObject, error)
|
|
// Get daily read stats graph data
|
|
// (GET /home/graph)
|
|
GetGraphData(ctx context.Context, request GetGraphDataRequestObject) (GetGraphDataResponseObject, error)
|
|
// Get user statistics (leaderboards)
|
|
// (GET /home/statistics)
|
|
GetUserStatistics(ctx context.Context, request GetUserStatisticsRequestObject) (GetUserStatisticsResponseObject, error)
|
|
// Get user streaks
|
|
// (GET /home/streaks)
|
|
GetStreaks(ctx context.Context, request GetStreaksRequestObject) (GetStreaksResponseObject, error)
|
|
// List progress records
|
|
// (GET /progress)
|
|
GetProgressList(ctx context.Context, request GetProgressListRequestObject) (GetProgressListResponseObject, error)
|
|
// Get document progress
|
|
// (GET /progress/{id})
|
|
GetProgress(ctx context.Context, request GetProgressRequestObject) (GetProgressResponseObject, error)
|
|
// Search external book sources
|
|
// (GET /search)
|
|
GetSearch(ctx context.Context, request GetSearchRequestObject) (GetSearchResponseObject, error)
|
|
// Download search result
|
|
// (POST /search)
|
|
PostSearch(ctx context.Context, request PostSearchRequestObject) (PostSearchResponseObject, error)
|
|
// Get user settings
|
|
// (GET /settings)
|
|
GetSettings(ctx context.Context, request GetSettingsRequestObject) (GetSettingsResponseObject, error)
|
|
}
|
|
|
|
type StrictHandlerFunc = strictnethttp.StrictHTTPHandlerFunc
|
|
type StrictMiddlewareFunc = strictnethttp.StrictHTTPMiddlewareFunc
|
|
|
|
type StrictHTTPServerOptions struct {
|
|
RequestErrorHandlerFunc func(w http.ResponseWriter, r *http.Request, err error)
|
|
ResponseErrorHandlerFunc func(w http.ResponseWriter, r *http.Request, err error)
|
|
}
|
|
|
|
func NewStrictHandler(ssi StrictServerInterface, middlewares []StrictMiddlewareFunc) ServerInterface {
|
|
return &strictHandler{ssi: ssi, middlewares: middlewares, options: StrictHTTPServerOptions{
|
|
RequestErrorHandlerFunc: func(w http.ResponseWriter, r *http.Request, err error) {
|
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
|
},
|
|
ResponseErrorHandlerFunc: func(w http.ResponseWriter, r *http.Request, err error) {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
},
|
|
}}
|
|
}
|
|
|
|
func NewStrictHandlerWithOptions(ssi StrictServerInterface, middlewares []StrictMiddlewareFunc, options StrictHTTPServerOptions) ServerInterface {
|
|
return &strictHandler{ssi: ssi, middlewares: middlewares, options: options}
|
|
}
|
|
|
|
type strictHandler struct {
|
|
ssi StrictServerInterface
|
|
middlewares []StrictMiddlewareFunc
|
|
options StrictHTTPServerOptions
|
|
}
|
|
|
|
// GetActivity operation middleware
|
|
func (sh *strictHandler) GetActivity(w http.ResponseWriter, r *http.Request, params GetActivityParams) {
|
|
var request GetActivityRequestObject
|
|
|
|
request.Params = params
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetActivity(ctx, request.(GetActivityRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetActivity")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetActivityResponseObject); ok {
|
|
if err := validResponse.VisitGetActivityResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// Login operation middleware
|
|
func (sh *strictHandler) Login(w http.ResponseWriter, r *http.Request) {
|
|
var request LoginRequestObject
|
|
|
|
var body LoginJSONRequestBody
|
|
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
|
|
sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err))
|
|
return
|
|
}
|
|
request.Body = &body
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.Login(ctx, request.(LoginRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "Login")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(LoginResponseObject); ok {
|
|
if err := validResponse.VisitLoginResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// Logout operation middleware
|
|
func (sh *strictHandler) Logout(w http.ResponseWriter, r *http.Request) {
|
|
var request LogoutRequestObject
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.Logout(ctx, request.(LogoutRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "Logout")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(LogoutResponseObject); ok {
|
|
if err := validResponse.VisitLogoutResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// GetMe operation middleware
|
|
func (sh *strictHandler) GetMe(w http.ResponseWriter, r *http.Request) {
|
|
var request GetMeRequestObject
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetMe(ctx, request.(GetMeRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetMe")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetMeResponseObject); ok {
|
|
if err := validResponse.VisitGetMeResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// GetDocuments operation middleware
|
|
func (sh *strictHandler) GetDocuments(w http.ResponseWriter, r *http.Request, params GetDocumentsParams) {
|
|
var request GetDocumentsRequestObject
|
|
|
|
request.Params = params
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetDocuments(ctx, request.(GetDocumentsRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetDocuments")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetDocumentsResponseObject); ok {
|
|
if err := validResponse.VisitGetDocumentsResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// CreateDocument operation middleware
|
|
func (sh *strictHandler) CreateDocument(w http.ResponseWriter, r *http.Request) {
|
|
var request CreateDocumentRequestObject
|
|
|
|
if reader, err := r.MultipartReader(); err != nil {
|
|
sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode multipart body: %w", err))
|
|
return
|
|
} else {
|
|
request.Body = reader
|
|
}
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.CreateDocument(ctx, request.(CreateDocumentRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "CreateDocument")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(CreateDocumentResponseObject); ok {
|
|
if err := validResponse.VisitCreateDocumentResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// GetDocument operation middleware
|
|
func (sh *strictHandler) GetDocument(w http.ResponseWriter, r *http.Request, id string) {
|
|
var request GetDocumentRequestObject
|
|
|
|
request.Id = id
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetDocument(ctx, request.(GetDocumentRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetDocument")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetDocumentResponseObject); ok {
|
|
if err := validResponse.VisitGetDocumentResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// GetHome operation middleware
|
|
func (sh *strictHandler) GetHome(w http.ResponseWriter, r *http.Request) {
|
|
var request GetHomeRequestObject
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetHome(ctx, request.(GetHomeRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetHome")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetHomeResponseObject); ok {
|
|
if err := validResponse.VisitGetHomeResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// GetGraphData operation middleware
|
|
func (sh *strictHandler) GetGraphData(w http.ResponseWriter, r *http.Request) {
|
|
var request GetGraphDataRequestObject
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetGraphData(ctx, request.(GetGraphDataRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetGraphData")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetGraphDataResponseObject); ok {
|
|
if err := validResponse.VisitGetGraphDataResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// GetUserStatistics operation middleware
|
|
func (sh *strictHandler) GetUserStatistics(w http.ResponseWriter, r *http.Request) {
|
|
var request GetUserStatisticsRequestObject
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetUserStatistics(ctx, request.(GetUserStatisticsRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetUserStatistics")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetUserStatisticsResponseObject); ok {
|
|
if err := validResponse.VisitGetUserStatisticsResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// GetStreaks operation middleware
|
|
func (sh *strictHandler) GetStreaks(w http.ResponseWriter, r *http.Request) {
|
|
var request GetStreaksRequestObject
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetStreaks(ctx, request.(GetStreaksRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetStreaks")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetStreaksResponseObject); ok {
|
|
if err := validResponse.VisitGetStreaksResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// GetProgressList operation middleware
|
|
func (sh *strictHandler) GetProgressList(w http.ResponseWriter, r *http.Request, params GetProgressListParams) {
|
|
var request GetProgressListRequestObject
|
|
|
|
request.Params = params
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetProgressList(ctx, request.(GetProgressListRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetProgressList")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetProgressListResponseObject); ok {
|
|
if err := validResponse.VisitGetProgressListResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// GetProgress operation middleware
|
|
func (sh *strictHandler) GetProgress(w http.ResponseWriter, r *http.Request, id string) {
|
|
var request GetProgressRequestObject
|
|
|
|
request.Id = id
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetProgress(ctx, request.(GetProgressRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetProgress")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetProgressResponseObject); ok {
|
|
if err := validResponse.VisitGetProgressResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// GetSearch operation middleware
|
|
func (sh *strictHandler) GetSearch(w http.ResponseWriter, r *http.Request, params GetSearchParams) {
|
|
var request GetSearchRequestObject
|
|
|
|
request.Params = params
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetSearch(ctx, request.(GetSearchRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetSearch")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetSearchResponseObject); ok {
|
|
if err := validResponse.VisitGetSearchResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// PostSearch operation middleware
|
|
func (sh *strictHandler) PostSearch(w http.ResponseWriter, r *http.Request) {
|
|
var request PostSearchRequestObject
|
|
|
|
if err := r.ParseForm(); err != nil {
|
|
sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode formdata: %w", err))
|
|
return
|
|
}
|
|
var body PostSearchFormdataRequestBody
|
|
if err := runtime.BindForm(&body, r.Form, nil, nil); err != nil {
|
|
sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't bind formdata: %w", err))
|
|
return
|
|
}
|
|
request.Body = &body
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.PostSearch(ctx, request.(PostSearchRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "PostSearch")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(PostSearchResponseObject); ok {
|
|
if err := validResponse.VisitPostSearchResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|
|
|
|
// GetSettings operation middleware
|
|
func (sh *strictHandler) GetSettings(w http.ResponseWriter, r *http.Request) {
|
|
var request GetSettingsRequestObject
|
|
|
|
handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetSettings(ctx, request.(GetSettingsRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetSettings")
|
|
}
|
|
|
|
response, err := handler(r.Context(), w, r, request)
|
|
|
|
if err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
} else if validResponse, ok := response.(GetSettingsResponseObject); ok {
|
|
if err := validResponse.VisitGetSettingsResponse(w); err != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, err)
|
|
}
|
|
} else if response != nil {
|
|
sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|