httpctrl

package
v0.0.0-...-82802e3 Latest Latest
Warning

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

Go to latest
Published: Apr 1, 2023 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	TestUser1 = &model.User{
		ID:    uuid.New(),
		Pass:  "test password",
		Email: "example@ex.com",
	}
	TestTokenRequest = &model.CreateTokenRequest{
		Email:     TestUser1.Email,
		Password:  TestUser1.Pass,
		TokenType: "auth",
	}
)
View Source
var (
	ErrNilPointer = errors.New("nil pointer reference")
)

Functions

This section is empty.

Types

type Server

type Server struct {
	*chi.Mux
	// contains filtered or unexported fields
}

Server ...

func New

func New(srv Service, cfg *config.Config, log *zap.Logger) *Server

New ...

func TestServer

func TestServer(t testing.TB, srv Service) *Server

TestServer is helper function that creates http server

func (*Server) AllTasks

func (s *Server) AllTasks(w http.ResponseWriter, r *http.Request)

AllTasks godoc.

@Tags		Tasks
@Summary	Get user tasks.
@ID			get_tasks
@Accept		plain
@Produce	json

@Success	200	{object}	model.GetTasksResponse
@Failure	401	{object}	model.Error
@Failure	404	{object}	model.Error
@Failure	500	{object}	model.Error

@Router		/tasks [get]

func (*Server) CreateGroup

func (s *Server) CreateGroup(w http.ResponseWriter, r *http.Request)

CreateGroup create new group.

@Tags		Groups
@Summary	Создание группы пользователей
@ID			group_create
@Accept		json
@Produce	json
@Param		request	body		model.CreateGroupRequest	true	"group data"
@Success	201		{object}	model.CreateGroupResponse	"Created"
@Failure	400		{object}	model.Error					"Bad Request"
@Failure	401		{object}	model.Error					"Not Authorized"
@Failure	409		{object}	model.Error					"Conflict"
@Failure	500		{object}	model.Error					"Internal Server Error"
@Router		/groups/ [post]
func (s *Server) CreateInviteLink(w http.ResponseWriter, r *http.Request)

CreateInviteLink create new invite link.

@Tags		Invites,Groups
@Summary	создание приглашения в группу.
@ID			invite_user
@Accept		json
@Produce	json
@Param		request	body		model.CreateInviteRequest	true	"invite data"

@Success	201		{object}	model.CreateInviteResponse
@Failure	400		{object}	model.Error
@Failure	401		{object}	model.Error
@Failure	403		{object}	model.Error
@Failure	409		{object}	model.Error
@Failure	500		{object}	model.Error

@Router		/invites [post]

func (*Server) CreateInviteViaGroup

func (s *Server) CreateInviteViaGroup(w http.ResponseWriter, r *http.Request)

CreateInviteViaGroup create new invite link.

@Tags		Invites,Groups
@Summary	создание приглашения в группу.
@ID			invite_user_groups
@Accept		json
@Produce	json
@Param		request		body		model.CreateInviteViaGroupRequest	true	"invite data"
@Param		group_id	path		string								true	"group id"

@Success	201			{object}	model.CreateInviteResponse
@Failure	400			{object}	model.Error
@Failure	401			{object}	model.Error
@Failure	403			{object}	model.Error
@Failure	409			{object}	model.Error
@Failure	500			{object}	model.Error

@Router		/groups/{group_id}/invite [post]

func (*Server) CreateTask

func (s *Server) CreateTask(w http.ResponseWriter, r *http.Request)

CreateTask create task.

@Tags		Tasks
@Summary	Create task.
@ID			create_task
@Accept		json
@Produce	json
@Param		request	body		model.TaskCreateRequest	true	"task"

@Success	200		{object}	model.Task
@Failure	400		{object}	model.Error
@Failure	401		{object}	model.Error
@Failure	403		{object}	model.Error
@Failure	409		{object}	model.Error
@Failure	500		{object}	model.Error

@Router		/tasks/ [post]

func (*Server) CreateToken

func (s *Server) CreateToken(w http.ResponseWriter, r *http.Request)

CreateToken creates JWT bearer token with provided data.

@Tags		Tokens
@Summary	Создание JWT токена для пользователя.
@ID			login_jwt
@Accept		json
@Produce	json
@Param		request	body		model.CreateTokenRequest	true	"User data"
@Success	201		{object}	model.CreateTokenResponse
@Failure	400		{object}	model.Error	"Bad Request"
@Failure	401		{object}	model.Error	"Unauthorized"
@Failure	500		{object}	model.Error	"Internal Server Error"
@Router		/users/token [post]

func (*Server) GetTask

func (s *Server) GetTask(w http.ResponseWriter, r *http.Request)

GetTask return summary info about task.

@Tags		Tasks
@Summary	Get task by ID.
@ID			get_task
@Accept		plain
@Produce	json
@Param		task_id	path		string	true	"task id"

@Success	200		{object}	model.Task
@Failure	400		{object}	model.Error
@Failure	401		{object}	model.Error
@Failure	403		{object}	model.Error
@Failure	409		{object}	model.Error
@Failure	500		{object}	model.Error

@Router		/tasks/{task_id} [get]

func (*Server) Ping

func (s *Server) Ping(w http.ResponseWriter, r *http.Request)

Ping godoc.

@Tags		Server
@Summary	Запрос состояния сервиса
@ID			ping
@Accept		plain
@Produce	plain
@Success	200	{string}	string	"OK"
@Failure	500	{string}	string	"Internal Server Error"
@Router		/ping [get]

func (*Server) RegisterUser

func (s *Server) RegisterUser(w http.ResponseWriter, r *http.Request)

RegisterUser creates user with provided data.

@Tags		User
@Summary	Создание пользователя
@ID			user_create
@Accept		json
@Produce	json
@Param		request	body		model.RegisterUserRequest	true	"User data"
@Success	201		{object}	model.User
@Failure	400		{object}	model.Error	"Bad Request"
@Failure	409		{object}	model.Error	"Conflict"
@Failure	500		{object}	model.Error	"Internal Server Error"
@Router		/users/register [post]

func (*Server) Start

func (s *Server) Start(context.Context) error

Start starts HTTP server.

func (*Server) Stop

func (s *Server) Stop(ctx context.Context) error

Stop graceful stops HTTP server.

func (*Server) UseInvite

func (s *Server) UseInvite(w http.ResponseWriter, r *http.Request)

UseInvite add user to group if invite is good.

@Tags		Groups
@Summary	Использование приглашения в группу.
@ID			apply_user_to_group
@Accept		plain
@Produce	json
@Param		group_id	path		string	true	"group id"
@Param		invite		query		string	true	"invite id"

@Success	201			{string}	model.CreateInviteResponse
@Failure	400			{object}	model.Error
@Failure	401			{object}	model.Error
@Failure	403			{object}	model.Error
@Failure	409			{object}	model.Error
@Failure	500			{object}	model.Error

@Router		/groups/{group_id}/apply [post]

func (*Server) UserMe

func (s *Server) UserMe(w http.ResponseWriter, r *http.Request)

UserMe return user profile.

@Tags		Users
@Summary	Get summary info about user.
@ID			users_me
@Accept		plain
@Produce	json

@Success	200	{object}	model.GetMeResponse
@Failure	401	{object}	model.Error
@Failure	404	{object}	model.Error
@Failure	500	{object}	model.Error

@Router		/users/me [get]

type Service

type Service interface {
	// Ping checks access to server.
	Ping(ctx context.Context) error
	// CreateToken create new jwt token for refresh and access to server if auth credits are correct.
	CreateToken(ctx context.Context, email, password, token string) (*model.CreateTokenResponse, error)
	// RegisterUser create record about user in storage and prepares response to user.
	RegisterUser(ctx context.Context, email, password string) (*model.User, error)
	// GetUserFromToken is helper function that decodes jwt token from t and check existing of user which id is provided
	// in token claims.
	GetUserFromToken(ctx context.Context, t string) (uuid.UUID, error)
	// CreateGroup create new group.
	CreateGroup(ctx context.Context, user uuid.UUID, name, description string) (*model.CreateGroupResponse, error)
	// CreateInvite creates invite link.
	CreateInvite(ctx context.Context, user, group uuid.UUID, role *model.Role, limit int) (*model.CreateInviteResponse, error)
	// UseInvite add user to group if invite is ok.
	UseInvite(ctx context.Context, user, group, invite uuid.UUID) error
	// GetMe return user's info
	GetMe(ctx context.Context, user uuid.UUID) (*model.GetMeResponse, error)
	// GetUserTasks return all tasks that are related to user.
	GetUserTasks(ctx context.Context, user uuid.UUID) (*model.GetTasksResponse, error)
	// GetTask return task if user related to task and task exists.
	GetTask(ctx context.Context, user, task uuid.UUID) (*model.Task, error)
	CreateTask(ctx context.Context, user uuid.UUID, task model.TaskCreateRequest) (*model.Task, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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