handlers

package
v1.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2022 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AuthorizationMiddleware added in v1.5.1

func AuthorizationMiddleware(
	tokenParser TokenParser,
	logger log.Logger,
) mux.MiddlewareFunc

AuthorizationMiddleware ...

func NewRouter

func NewRouter(
	options RouterOptions,
	dependencies RouterDependencies,
) *mux.Router

NewRouter ...

Types

type RouterDependencies

type RouterDependencies struct {
	UserGetter       usecases.UserGetter
	TaskStorage      usecases.TaskStorage
	SolutionStorage  usecases.SolutionStorage
	SolutionRegister entities.SolutionRegister
	Clock            usecases.Clock
	Logger           log.Logger
}

RouterDependencies ...

type RouterOptions added in v1.5.1

type RouterOptions struct {
	StaticFilePath  string
	TokenSigningKey string
	TokenTTL        time.Duration
}

RouterOptions ...

type SolutionHandler

type SolutionHandler struct {
	SolutionUsecase SolutionUsecase
	Logger          log.Logger
}

SolutionHandler ...

func (SolutionHandler) CreateSolution

func (handler SolutionHandler) CreateSolution(
	writer http.ResponseWriter,
	request *http.Request,
)

CreateSolution ...

@router /tasks/{taskID}/solutions/ [POST]
@param taskID path integer true "task ID" minimum(1)
@param data body entities.Solution true "solution data"
@accept json
@security JWTAuthorization
@produce json
@success 201 {object} entities.Solution
@failure 400 {string} string
@failure 401 {string} string
@failure 403 {string} string
@failure 404 {string} string
@failure 500 {string} string
@tags Solution

func (SolutionHandler) FormatSolution added in v1.5.1

func (handler SolutionHandler) FormatSolution(
	writer http.ResponseWriter,
	request *http.Request,
)

FormatSolution ...

@router /solutions/format [POST]
@param data body entities.Solution true "solution data"
@accept json
@security JWTAuthorization
@produce json
@success 200 {object} entities.Solution
@failure 400 {string} string
@failure 401 {string} string
@failure 403 {string} string
@failure 404 {string} string
@failure 500 {string} string
@tags Solution

func (SolutionHandler) GetSolution

func (handler SolutionHandler) GetSolution(
	writer http.ResponseWriter,
	request *http.Request,
)

GetSolution ...

@router /solutions/{id} [GET]
@param id path integer true "solution ID" minimum(1)
@security JWTAuthorization
@produce json
@success 200 {object} entities.Solution
@failure 400 {string} string
@failure 401 {string} string
@failure 403 {string} string
@failure 404 {string} string
@failure 500 {string} string
@tags Solution

func (SolutionHandler) GetSolutions

func (handler SolutionHandler) GetSolutions(
	writer http.ResponseWriter,
	request *http.Request,
)

GetSolutions ...

@router /tasks/{taskID}/solutions/ [GET]
@param taskID path integer true "task ID" minimum(1)
@param pageSize query integer true "page size" minimum(1)
@param page query integer true "page" minimum(1)
@security JWTAuthorization
@produce json
@success 200 {object} entities.SolutionGroup
@failure 400 {string} string
@failure 401 {string} string
@failure 403 {string} string
@failure 404 {string} string
@failure 500 {string} string
@tags Solution

type SolutionUsecase added in v1.5.1

type SolutionUsecase interface {
	GetSolutions(userID uint, taskID uint, pagination entities.Pagination) (
		entities.SolutionGroup,
		error,
	)
	GetSolution(userID uint, solutionID uint) (entities.Solution, error)
	CreateSolution(userID uint, taskID uint, solution entities.Solution) (
		entities.Solution,
		error,
	)
}

SolutionUsecase ...

type TaskHandler

type TaskHandler struct {
	TaskUsecase TaskUsecase
	Logger      log.Logger
}

TaskHandler ...

func (TaskHandler) CreateTask

func (handler TaskHandler) CreateTask(
	writer http.ResponseWriter,
	request *http.Request,
)

CreateTask ...

@router /tasks/ [POST]
@param data body entities.Task true "task data"
@accept json
@security JWTAuthorization
@produce json
@success 201 {object} entities.Task
@failure 400 {string} string
@failure 401 {string} string
@failure 403 {string} string
@failure 404 {string} string
@failure 500 {string} string
@tags Task

func (TaskHandler) DeleteTask

func (handler TaskHandler) DeleteTask(
	writer http.ResponseWriter,
	request *http.Request,
)

DeleteTask ...

@router /tasks/{id} [DELETE]
@param id path integer true "task ID" minimum(1)
@security JWTAuthorization
@produce plain
@success 204 {string} string
@failure 400 {string} string
@failure 401 {string} string
@failure 403 {string} string
@failure 404 {string} string
@failure 500 {string} string
@tags Task

func (TaskHandler) GetTask

func (handler TaskHandler) GetTask(
	writer http.ResponseWriter,
	request *http.Request,
)

GetTask ...

@router /tasks/{id} [GET]
@param id path integer true "task ID" minimum(1)
@security JWTAuthorization
@produce json
@success 200 {object} entities.Task
@failure 400 {string} string
@failure 401 {string} string
@failure 403 {string} string
@failure 404 {string} string
@failure 500 {string} string
@tags Task

func (TaskHandler) GetTasks

func (handler TaskHandler) GetTasks(
	writer http.ResponseWriter,
	request *http.Request,
)

GetTasks ...

@router /tasks/ [GET]
@param pageSize query integer true "page size" minimum(1)
@param page query integer true "page" minimum(1)
@security JWTAuthorization
@produce json
@success 200 {object} entities.TaskGroup
@failure 400 {string} string
@failure 401 {string} string
@failure 403 {string} string
@failure 404 {string} string
@failure 500 {string} string
@tags Task

func (TaskHandler) UpdateTask

func (handler TaskHandler) UpdateTask(
	writer http.ResponseWriter,
	request *http.Request,
)

UpdateTask ...

@router /tasks/{id} [PUT]
@param id path integer true "task ID" minimum(1)
@param data body entities.Task true "task data"
@accept json
@security JWTAuthorization
@produce plain
@success 204 {string} string
@failure 400 {string} string
@failure 401 {string} string
@failure 403 {string} string
@failure 404 {string} string
@failure 500 {string} string
@tags Task

type TaskUsecase added in v1.5.1

type TaskUsecase interface {
	entities.TaskGetter

	GetTasks(userID uint, pagination entities.Pagination) (
		entities.TaskGroup,
		error,
	)
	CreateTask(userID uint, task entities.Task) (entities.Task, error)
	UpdateTask(userID uint, taskID uint, task entities.Task) error
	DeleteTask(userID uint, taskID uint) error
}

TaskUsecase ...

type TokenCreator added in v1.5.1

type TokenCreator interface {
	CreateToken(user entities.User) (entities.Credentials, error)
}

TokenCreator ...

type TokenHandler added in v1.5.1

type TokenHandler struct {
	TokenCreator TokenCreator
	Logger       log.Logger
}

TokenHandler ...

func (TokenHandler) CreateToken added in v1.5.1

func (handler TokenHandler) CreateToken(
	writer http.ResponseWriter,
	request *http.Request,
)

CreateToken ...

@router /tokens/ [POST]
@param data body entities.User true "user data"
@accept json
@produce json
@success 201 {object} entities.Credentials
@failure 400 {string} string
@failure 401 {string} string
@failure 403 {string} string
@failure 404 {string} string
@failure 500 {string} string
@tags Token

type TokenParser added in v1.5.1

type TokenParser interface {
	ParseToken(authorizationHeader string) (*entities.AccessTokenClaims, error)
}

TokenParser ...

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL